電子書籍の厳選無料作品が豊富!

似たような質問をこないだ行ったばかりになるのですが、別のアプリから行ったダイアログの表示を検知する方法について質問いたします。

調べたところWindowsからダイアログの表示時にWM_INITDIALOG当たりが投げられるようなのですが、これを取得する方法がわかりません。

環境: WindowsXP+BCB

[ コード ]
BEGIN_MESSAGE_MAP
    VCL_MESSAGE_HANDLER( WM_INITDIALOG, hogehoge(ここに何を入れればいいのかがわかりません), GetDialog )
END_MESSAGE_MAP( TForm )

ご教授のほどを宜しくお願いいたします。

A 回答 (3件)

 こんにちは。


 SetWindowsHookEx()で対象アプリをフックすれば出来るかもしれません。

 http://msdn.microsoft.com/ja-jp/library/cc430103 …
    • good
    • 0

>    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メッセージは、そのダイアログを作成したアプリケーションにのみ飛ぶ」ので「そのダイアログを作成してない、他のアプリには飛んで来ない」です。

なので「やっても無駄」です。
    • good
    • 0

「WM_INITDIALOG」はダイアログを作成する時に指定したコールバック


関数に送られます(他アプリ等のメッセージキューには入りません)

「FindWindow()APIを使って監視する」が定石だと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!