VBで作成したフォームがアクティブになったタイミングを判別する


ゆう  2009-10-16 23:40:39  No: 102017

VBで作成したEXEのフォーム(ウィンドウ)がアクティブになった瞬間を取得することはできますか?

(例)
①VBで作成したEXEを起動する。(画面にフォームが表示される)
②エクスプローラーを手で起動する。(VBのフォームからフォーカスが外れる)③エクスプローラーを手で閉じる(VBのフォームがアクティブになる)
上記、③のタイミングでイベントを発生させたい。


オショウ  2009-10-16 23:51:29  No: 102018

Form_Activateのイベントがありますが、これではダメ?

以上。


ゆう  2009-10-17 00:14:38  No: 102019

「Form_Activateイベント」は発生しませんでした。
おそらくVB以外のアプリケーションから、VBにフォーカスが移っただけのためだと思われます・・・。


ひよこ  2009-10-17 00:59:50  No: 102020

vb.netの環境しかないのでそちらでためしましたが
VB以外のアプリケーションからフォーカスが移ってもイベントが
発生しました。

イベントが発生したかどうかはどうやって確かめたのでしょうか?


ゆう  2009-10-17 01:27:55  No: 102021

Private Sub Form_Activate()
    MsgBox "Form_Activate"
End Sub

で、メッセージが発生するかどうかで確認しています。


オショウ  2009-10-17 01:43:16  No: 102022

永らくVB6なんて使ってなかったので・・・
WinXPとVISTAで確認しました。

確かに起動時にしか、Activateイベント発生しませんネ!
Deactivate/LostFocusも来ない・・・

摩訶不思議・・・昔はイベント来たように記憶してました
が・・・そうなれば、WndProcをHookするかしないと、ダメ
かも。

要は、WM_GOTFOCUSメッセージを拾うようにしないとダメの
ようです。

以上。参考まで


オショウ  2009-10-17 05:28:50  No: 102023

VB6でのWndProcの使い方

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t35.htm
http://oshiete1.goo.ne.jp/qa2973603.html

ちょっと余計なことが書かれてますが、基本的には
SetWindowLongでWndProcの登録と解除を行います。

RegisterWindowMessageは今回は使いません。

以上。参考まで


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加