古代VBプログラマ質問スレ(Ver.6.0 まで) part65 [転載禁止]©2ch.net
ここは古代に使われていたVisual Basic 〜6.0 の質問スレです。
質問者は使用しているOS、VBのバージョン、サービスパックのバージョン、
「何がしたくて、どうしたけど、どう困っているのか」を明確に書きましょう。
VB.NETは別物なので専門スレで、VBA、APIの質問もそれぞれのスレで。
○ 質問者の心得
一.質問する前にMSDNやGoogle、過去ログにも目を通してみる。
二.VBScript、インストーラーなどはこのスレでOK。
三.質問は第三者にもわかりやすいよう簡潔かつ具体的に。
四.荒らしは相手しない。
○ 回答者の心得
一.答えられない質問は無駄に罵倒せずスルー。無理するな。
二.代用法を強制しない。
三.回答する上で必須ではない情報をむやみに聞き返さない。
四.荒らしは相手しない。
五.VB情報募集中。
六.回答は質問者が理解できるよう具体的に。
MSDN Online Japan ホーム
http://www.microsoft.com/japan/msdn/default.asp
Visual Studio 6.0 Service Pack 6
http://msdn.microsoft.com/vstudio/downloads/updates/sp/vs6/sp6/default.aspx
Google
http://www.google.co.jp/
前スレ VBプログラマ質問スレ(Ver.6.0 まで) part64
http://peace.2ch.net/test/read.cgi/tech/1393069842/
※「まず自分で調べる」クセを身につけよう。 大昔N88やクイックBasicで
遊んでいたのでちょっと気に成った YoutubeをTHXでダウンロードすると動画タイトルがファイル名になることがあって
動画タイトルに連音符のような特殊文字が使われているとVBで扱えなくなる
エクスプローラでリネームしてやれば済む話だけども
寝てる間にダウンロードして所定のフォルダに所定のファイル名で保存するプログラムは動作しない
変な文字コードが入り込んだファイルというのはFileListBox上には存在するけども
FileLen,Open,Name,FileCopyなどでは存在しないファイルとなる
実際のファイル名とVBが見ているファイル名が違うからだと思われる 例えば適当なテキストファイルがあって、それをエクスプローラで
12♬34.txt
とリネームします
これをVBのプログラムで読むには? そもそもVB6ってロングファイルネームサポートされてないんじゃ?
8.3形式のファイル名で読むしかないんじゃね >>398
そいつはこの板を荒らしてるBasicジジイだ。触っちゃいけない >>401
そもそも VB6.0 のコードエディタに貼り付けても化けちゃうしw
CreateFileW 等の API を使ってゴリゴリ書くしかないだろうね。
あと、MAX_PATH を超えるような場合は \\?\ や \\?\UNC\ 等のプレフィックスをつける必要がある。
ttps://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx まだ使ってる人いるのかw
VBって割と最初からUnicode対応だと思ったけど、IDEのエディターやコンパイラは対応してなかったのかw 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
LVCSB EXEはVBPと同じフォルダに作られるのがデフォルトだったけど
どうもWindows10の新しいバージョンになってから
EXEが作られるフォルダのデフォルトというのがカレントフォルダとは限らないようだ
いったい何を見てEXEを作るフォルダのデフォルトを決めているのだろう Win10の最近の更新からVB6がインストールができなくなったという情報あり
Win10をUSBなりからクリーン・インストールしたら
まずVBをインストールして、その後にWinの更新をすればいいのかも 最後の行だけ改行コードがついてないテキストファイルがあって
それを読みながら修正などしながら、別ファイルに書き出すという処理で
最後の行には、どうしたって改行コードがついてしまうよね そこは工夫の問題じゃない?
最初だけ改行なしでWrite、次からは改行+Writeでも良い。 全て書出し終わったファイルをバイナリで再度開いて末尾の0D0Aだけ削除 なるほどー
「まずバイナリでファイル末尾の改行の有無を判定する
末尾に改行なしなら、2行目以降は、改行コードを頭に付けて出力する」
ありがとうございました
自分にない発想に出会うと感動しますね
数年前に阿修羅で出会った感動の書き込みを紹介しますと
「日米戦争はイカサマだった→東京裁判は昭和天皇が進駐軍にやらせたものだった」
これにはぶっ飛びました
自分では色々考えたつもりでも、それは所詮自分の殻の中の世界であって
真実に到達できていない可能性があるんだと思い知らされました >>419
周りが馬鹿やめろよと思っていることに気付かない人かな こういうのをおかしくないと思うような頭だからまだVBなんかを平然と使うのかね 2発の原爆のうちの
広島の方は天皇原爆だったという話だよ VB6.0を現代的なOSで動くようにしたら需要あるだろうか? >>429
実際に求められてるのって実はその辺だと思う
最近の言語は進化が作成者のオナニーになっているというか
素養のない一般の人(だが仕事で必要)には
VBAレベルが限界だと思う
OfficeのVBAがVB6ベースでも世の中そんなに困ってない だよね
Windowsにしても買い替えさせるために不要な変更を行ってる
というか改悪している VB6でクラスライブラリをビルドしてるんだけど、
1)Constみたいな定数を実装する方法は無いのかな?
2)Optional ByRef引数の指定が省略されたかどうかを、その関数内で判定するのはどうするのがいいだろ? >>432の補足
ActiveX DLLとしてビルドして、外部プロジェクト(VBA)から利用しようとしている
1)外部プロジェクトからConstみたいに参照できる定数をActiveX DLLに実装できないか VBSで、ウインドウハンドルを持たないボタンを安定して押す方法ってあります?
SendKey連打で切り抜けられるものもありますが、
→→↓↓Enterとか、必殺技コマンドみたいなのが必要な状況では、いまいち安定しません。
5秒待つとかダルいですし、そんなに待ってもダメな時もありますし・・。
もしくは、JSでもいいんですけど。 >>432
1.
Property Getだけ用意する
2.
IsMIssingてのがあるけどまずありえない値を初期値にしおく
http://www.openreference.org/articles/view/239 >>434
ブラウザ上のボタンはどうやって押すんだろね
分からんのでUWSC使ってる
UWSCはハンドルじゃなくてプロセスIDと座標を使ってるから
SendMessageじゃないAPIがあるんじゃないかと思う >>436
ブラウザは、IEで、htmlで書かれている部分ならgetElementsByXXXXという関数で簡単に押せます。
ダウンロード通知バー内のボタンが難しい。 VBSじゃなければUIAutomationかAccesibilityでいけるんだが、VBSだと難しいかも。
>>436
webの話なの?
それならVBSでもいけるでしょ。
それからUWSCはAccesibility使えた筈。 VBSじゃなくて良いならPowerShellでUIAutomationは使える。 >>435
ありがとう。
2)
IsMissingなんて使ったことなかったw
まさにVariant型で配列を渡す引数だったし、良さそう
VBAでは初期値NullにしてIsNullで判定してたけど、VB6だと引数初期値Nullでコンパイルエラーになるから困ってた
1)
Optional引数の初期値には指定できなさそうだ
現在、InstancingプロパティをGlobalMultiUseにして、Publicメンバ変数にして、Initializeイベントで初期化してるんだけど、これもOptional引数の初期値には出来ない >>429
需要ある
VBAのライブラリ開発では重宝してる。
VSTOみたいにバージョン相性もないし、ほぼそのままユーザフォームを含むVBA資産を再利用できるし。
現行では、いちいちファイル保存先を指定したり、ビルド先を指定したり、インターフェースの機能構成が不便だ。
あと勝手にレジストリにDLLが登録されるのはどうにかして欲しい(管理者権限を付けないで起動すれば登録されないけど) >>441
そんなあなたに
https://eijiman.com/windows10-vb6-runtime/#Window10VB6
Microsoftによって機械翻訳された内容ですが、次の記載があります。
VB6 ランタイムは Windows 10 に付属し、その OS の有効期間にわたってサポートされます。
出典:Visual Basic 6.0 のサポートに関する声明 | Microsoft Docs
つまり「Windows10でVB6ランタイムが継続的に実行できるようにサポートし続けていく」ということになるのでしょう。 >>441
VBAのライブラリをVB6で作って意味あるの?w
UI以外はVB6で書けるならVBAで書けるでしょw
それにVSTOの代替にはならんでしょ つーか、20年前に死んでる開発ツールをなぜまだ使うのw
もういい加減成仏させてやろうよ >>443
「ライブラリ」の意味も分からん中卒無能は黙っていろ >>446
ライブラリはオフィスだけでも作れるんだけど....
むしろVB6ランタイムに依存するライブラリをわざわざ使う意味が分からん。
上にも書いたが、UI以外はできることは同じなんだけど > むしろVB6ランタイムに依存するライブラリをわざわざ使う意味が分からん。
VB6ランタイムに依存することが
何のデメリットになるのかわからん >>447
>ライブラリはオフィスだけでも作れる
どういう実装形態を言っているのか?
ワークブック参照とか言い出すんじゃないだろな? >>438
VBSでもExcel経由でAccessibleObjectFromWindowが使えそうなんですが、
どうやってIID_IAccessibleを渡せばいいかわからないんです。
IID_IDispatch(?)を試そうとしたら、今度はStrPtr関数が使えないという。 win10でVB6使ってるけど
フォーム上に配置したコントロールを複数選択して移動すると
ヌルヌルして時間かかるよね
ま、問題ないけど >>453
VB6でコントロールの編集が重い場合
デスクトップ コンポジションを無効にしないとデザイン画面が重い。
1.コントロールパネルで「パフォーマンス」を検索
2.パフォーマンスの情報とツール
3.視覚効果の調整→視覚効果タブ
4.カスタム内の[デスクトップコンポジションを有効にする]のチェックを外す コントロールパネル
→システム
→システムの詳細設定
→「詳細設定」タブ
→パホーマンス
→カスタム
このチェックボックス付きリストの中に
「デスクトップコンポジションを有効にする」はありませんでした
Win10 Homeだからかもしれません
元々アニメーション表示のような「効果」は大嫌いなので、ほとんどOFFにしてましたが
全部OFFにしても変わりありませんでした
でもまぁWin10でコンパイルできるだけでも御の字
お手数をおかけしました DOS窓では上手くいくのに、VB6から以下を実行するとうまく動きません。
何がいけないのでしょうか?
Shell "powershell start-process cmd -ArgumentList '/c bcdedit /set TESTSIGNING ON'-verb runas & shutdown /r /t 0", vbHide TESTSIGNING ONの後のスペースが抜けてましたが、相変わらず動かない・・・。
powershell start-process cmd -ArgumentList '/c bcdedit /set TESTSIGNING ON' -verb runas & shutdown /r /t 0 DOS窓で動くけど、VB6からは動かないと言ったら
昔ならDOS時代のカレントフォルダ上で動くアプリだからってことだったけど
パワーシェルとかわからん VBからShellでPowerShell呼び出して何かを動かすの?
ピタゴラスイッチみたいなことするね。
普通にプログラミングしてる奴なら気持ち悪いとか、かっこ悪いと思うんじゃないかな。 世の中使えるソフト屋と使えないソフト屋といるだろ?
気にならないということはつまりそういうこと VBのコード編集画面てWin10でカーソル太く設定しても変わらないんだ
しかも点滅が5秒で終わるしバカじゃなかろかWin10 ピクチャの高さを設定して、設定できたか確認する
Picture1.Height = 50
Debug.Print Picture1.Height
巨大なピクチャはメモリの都合か、設定できないのは知ってるんだけど
こういう小さいピクチャでも設定できないケースがあるというのは、
どういうことが考えられるでしょうか
Picture1.Refreshを入れてもDoEventsを入れても変わらず
Win10です PowerShellねえ
Windows API利用する方法探る方が良い様な >>440
初期値Nullなんて止めとけ
属性でMAX値設定する方が固い 画面だけVBで裏ではコンソールアプリ動かすなんてよくやってたから違和感ない VB6のFormat 関数の和暦変換
レジストリの和暦データ見るようになったよね つまり今まで見てなかったのか?
VB6のランタイムに何か修正あったのか? 最初からこうなることがわかってたら独自実装のFormat作らなかったのに。遅いねん MS も公にはVB6 対応しまーす
とは言いにくかったんでしょう 今のままでは令和に変換できなかったってこと?
で、今後は改元に対応するようにランタイムが修正されたと。 Windows10(64bit版)、Jet4.0(DAO3.6)でSQL文(OpenRecordset"SELECT...")を実行すると
まれにフリーズ(応答なし)になるの何で?
同じプログラムでもWindows7(32bit版)だとフリーズせず結果が帰ってくる 地元でVB6→VB.NETへのマイグレーション案件有るんだが
移行が一足飛びで出来ない事実を知って炎上必須っぽいので様子見 Win10のmsvbvm60.dllのタイムスタンプは2018年になってる
天皇の生前トンズラが分かった時点でレジストリを見るように対応したってことだろうか 自分用のメーラー作ってるんだけど
BASP21使ったことある人いる?
RcvMailとRcvMail2があって、それぞれSAVEコマンドがある
どう違うの?
コールバック関数で処理を中断できるようにした2を後から追加したってことなのか Windowsには、標準でVBのコンパイラが入ってるそうだけど、
GUI作るときはどうすんの? >>478
標準でVBのコンパイラについてはよく知らないけど、GUIはWin32APIだけで出来ることは出来る。 >>481
それ、VB6.0で通用する要素0に見えるんだが。 う〜ん、普通にVSでGUI作って、
コンパイルだけ標準コンパイラって無理かな? ニュー速+でwin10アップデートするとVB6/VBA全滅するってスレ立ってたけど、こっちは静かだな。 それは知らなかった
おれはバリアント型の配列を使ったことが無いから無事だっただけか
しかしWin10はおかしいな
毎月、システム丸ごと入れ替えてるんじゃないかと思うほど大変更をして
メモ帳の仕様を変更しましたとか、誰も望んでいないようなことを言う
絶対なにか企んでるよな >>487
1. この程度の変更は普通
2. ユーザーの要望を受け付けてる
3. メモ帳の変更は1809で人気第二位になった機能
https://insider.windows.com/ja-jp/community-news/windows-insiders-vote-for-their-favorite-features/
#2 ? A better Notepad
WSLの素晴らしさは開発者ならだれでもそう思うし、
WSL=Linux対応に関連するメモ帳の機能強化は当然の結果。やらないほうがおかしい。 この程度の変更は普通って誰基準で普通などと言うのか
Win10を出して何年経ってるんだ
毎回広範囲な変更しやがって
試行錯誤でユーザーに試験させている
サービスで言うと毎回20サービスくらい変更している
一向に収まる気配なし
どんだけ完成度低いんだ
UIは子供が作ったようにメチャクチャだし >>Variant型配列
セキュリティ上宜しく無いと言う話
何でも受け入れるVariant型は確かに問題有る まあ古代VBプログラマの板に来る奴なんて保守派だよな
設定アプリとコントロールパネルをいい加減統一して欲しい
ついでに言えば管理ツールも >>489
> Win10を出して何年経ってるんだ
> 毎回広範囲な変更しやがって
イミフ。1ヶ月で広範な変更したら怒るだろ?
何年も経ってるんだから、そりゃ最初に比べれば
変更は多いだろうさ 普通ならそのレスが何を言いたいのかはっきりわかるはず うん。>>489が実は何も困ってないのに
文句だけ言ってるってことはわかるよw RmDir直後にMkDirしたら「ファイル名または番号が正しくありません。」になるのやめてくれ メモ帳でテキストを作っったら
プログラムから正常に読めなくて悩んじゃったよ
時代は変わっているのじゃのう BOMかな
なんでデフォルトがありなんだろうね
今無い方が主流だよね