• 締切済み

WM_INITDIALOGのフック

どこにも載っていないため質問させていただきます。 次のようなコードを書いたとき、ダイアログの出現の検知ができるWM_INITDIALOGを検知できないのはなぜでしょうか。 hHookForDialog = SetWindowsHookEx(WH_CALLWNDPROCRET, CallWndRetProcForDialog, hDll, 0); LRESULT CALLBACK CallWndRetProcForDialog(int nCode, WPARAM wp, LPARAM lp) { if(nCode < 0) return CallNextHookEx(hHookForDialog, nCode, wp, lp); PCWPRETSTRUCT Wmes = (PCWPRETSTRUCT)lp; if(nCode == HC_ACTION) { if(Wmes->message == WM_INITDIALOG) { PostMessage(hWndToSendMessage, mesDialogCreated, (WPARAM)(Wmes->hwnd), NULL); } } return CallNextHookEx(hHookForDialog, nCode, wp, lp); } フック自体は成功しているようで、条件文を外すとメッセージはたくさん飛んできます。 けれども目的のWM_INITDIALOGは無いようです。 どうすればいいのかご教授お願いします。

みんなの回答

回答No.1

教えてgoo内のC++のカテゴリを閲覧し、「WM_INITDIALOG フック」をキーワードにして「このカテゴリーから検索」「教えて!検索」を実施してみましょう。 少なからずヒントが見つかります。

M2452
質問者

補足

もちろん検索してみました。 今回はグローバルフックなので対象のアプリが起動していない云々は関係ないはずですし、他の回答を見ると出来そうなことが書いてあります。 しかし現に今できていませんし、作者は別ですがそれをしているアプリケーションもあるのです。

関連するQ&A

専門家に質問してみよう