VBで作成したEXEのフォーム(ウィンドウ)がアクティブになった瞬間を取得することはできますか?
(例)
①VBで作成したEXEを起動する。(画面にフォームが表示される)
②エクスプローラーを手で起動する。(VBのフォームからフォーカスが外れる)③エクスプローラーを手で閉じる(VBのフォームがアクティブになる)
上記、③のタイミングでイベントを発生させたい。
Form_Activateのイベントがありますが、これではダメ?
以上。
「Form_Activateイベント」は発生しませんでした。
おそらくVB以外のアプリケーションから、VBにフォーカスが移っただけのためだと思われます・・・。
vb.netの環境しかないのでそちらでためしましたが
VB以外のアプリケーションからフォーカスが移ってもイベントが
発生しました。
イベントが発生したかどうかはどうやって確かめたのでしょうか?
Private Sub Form_Activate()
MsgBox "Form_Activate"
End Sub
で、メッセージが発生するかどうかで確認しています。
永らくVB6なんて使ってなかったので・・・
WinXPとVISTAで確認しました。
確かに起動時にしか、Activateイベント発生しませんネ!
Deactivate/LostFocusも来ない・・・
摩訶不思議・・・昔はイベント来たように記憶してました
が・・・そうなれば、WndProcをHookするかしないと、ダメ
かも。
要は、WM_GOTFOCUSメッセージを拾うようにしないとダメの
ようです。
以上。参考まで
VB6でのWndProcの使い方
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t35.htm
http://oshiete1.goo.ne.jp/qa2973603.html
ちょっと余計なことが書かれてますが、基本的には
SetWindowLongでWndProcの登録と解除を行います。
RegisterWindowMessageは今回は使いません。
以上。参考まで