SetWindowsHookExについて


りょく  2008-02-27 22:08:34  No: 29931  IP: [192.*.*.*]

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

編集    削除
KHE00221  2008-02-28 00:45:27  No: 29932  IP: [192.*.*.*]

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

編集    削除
りょく  2008-02-28 01:35:26  No: 29933  IP: [192.*.*.*]

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

編集    削除
KHE00221  2008-02-28 03:32:42  No: 29934  IP: [192.*.*.*]

つまり

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

だね

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

編集    削除