• 締切済み

別のアプリから表示されたダイアログを検知する方法

似たような質問をこないだ行ったばかりになるのですが、別のアプリから行ったダイアログの表示を検知する方法について質問いたします。 調べたところWindowsからダイアログの表示時にWM_INITDIALOG当たりが投げられるようなのですが、これを取得する方法がわかりません。 環境: WindowsXP+BCB [ コード ] BEGIN_MESSAGE_MAP     VCL_MESSAGE_HANDLER( WM_INITDIALOG, hogehoge(ここに何を入れればいいのかがわかりません), GetDialog ) END_MESSAGE_MAP( TForm ) ご教授のほどを宜しくお願いいたします。

みんなの回答

回答No.3

 こんにちは。  SetWindowsHookEx()で対象アプリをフックすれば出来るかもしれません。  http://msdn.microsoft.com/ja-jp/library/cc430103.aspx

回答No.2

>    VCL_MESSAGE_HANDLER( WM_INITDIALOG, hogehoge(ここに何を入れればいいのかがわかりません), GetDialog ) 「TMessage」を入れる。     VCL_MESSAGE_HANDLER( WM_INITDIALOG, TMessage, GetDialog ) って事。で、GetDialogは void __fastcall TForm1::GetDialog( TMessage& Message ) って感じ。マクロ部分で2つ目の引数に「TMessage」って書くと、3つ目に指定した関数は「引数がTMessage&の関数」になる。 ちなみに「WM_INITDIALOGメッセージは、そのダイアログを作成したアプリケーションにのみ飛ぶ」ので「そのダイアログを作成してない、他のアプリには飛んで来ない」です。 なので「やっても無駄」です。

  • massano1
  • ベストアンサー率40% (4/10)
回答No.1

「WM_INITDIALOG」はダイアログを作成する時に指定したコールバック 関数に送られます(他アプリ等のメッセージキューには入りません) 「FindWindow()APIを使って監視する」が定石だと思います。

関連するQ&A