SetWindowsHookExについて


りょく  2008-02-27 22:08:34  No: 29931

DLLのモジュールで以下を使用してシステムフックをかけているのですが
SetWindowsHookEx(WH_CALLWNDPROC, @CallWndProc, hInstance, 0);
実際に実行してみるとEXEのプライマリーのスレッド上のメッセージしか
インターセプトしていないようなのですが?
何か考えられる問題点などあるでしょうか?


KHE00221  2008-02-28 00:45:27  No: 29932

DLL上でメッセージを判別してそこで BEEP 入れても音が鳴らない?
それとも 
EXE に メッセージやコールバックを設定してるけど飛んでこない?


りょく  2008-02-28 01:35:26  No: 29933

DLLのコールバックに入ってくるのはホストアプリ上のメッセージだけです。
ちなみにhInstanceをモジュールハンドルに変えても結局ホストアプリ上のメッセージしか
コールバックに入ってきませんでした


KHE00221  2008-02-28 03:32:42  No: 29934

つまり

>EXE に メッセージやコールバックを設定してるけど飛んでこない?

だね

EXE から DLL にコールバック先を指定すると EXE がロードした DLL に
コールバック先が指定されるけど
HOOK DLL はプロセス毎にロードされるので
そのプロセス毎にロードされたDLLにはコールバック先が設定されて
いないでのコールバックが飛んでこないわけです。


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

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






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