- - PR -
JNIでSetWindowsHookExがかからない?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-11-14 16:08
JavaからCで記述したSetWindowsHookExを呼び出しています。
具体的には void SetHooks() { SetWindowsHookEx(WH_CALLWNDPROC, hookProc, DLLのハンドル, 0); } という感じで、hookProcもSetHooksもDLLにあります。 WH_CALLWNDPROCのほかにもWH_GETMESSAGEなどもかけています。 hookProcでWM_PAINTであれば処理する、といったプログラムです。 ところが、 void test() { // SetHooksをJNIで呼び出す // JFrameを作成してsetVisible(true)する } と実行すると、このJFrameに対してだけhookProcが呼び出されます。 JFrameの上でマウスを動かしたりキー入力すると、フックできます。 他のアプリではhookProcが呼び出されません(printfによると)。 SetWindowsHookExの第4引数が0の場合、すべてのウィンドウに (例えば同時にメモ帳が起動していればそのメモ帳に対しても) フックがかかるという認識なのですが、間違っているでしょうか? 同様の状態になった方はいらっしゃるんでしょうか。 ご経験のある方、ヒントでも構いませんので ご意見お待ちしています。 環境は OS: WindowsXP JDK: 1.5.0_05 Cコンパイラ: Borland C++ Compiler です。よろしくお願いします。 |
|
投稿日時: 2005-11-14 16:31
「DLLのハンドル」の部分がアプリケーションのハンドルになっていると、
その該当するアプリケーションしかフックしてくれないようですね。 「DLLのハンドル」はhInstanceでしょうか? |
1