プロセス内のすべてのスレッドのためのフックをインストールすることはできません

StackOverflow https://stackoverflow.com/questions/1789063

質問

私は、アプリケーションでキーボードをフックしています。要件は、プロセス内のすべてのスレッドでキーボードをフックすることです。

私は使用は、SetWindowsHookEx API

SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)::KeyboardHookProc, hInst, 0);

フックは、プロセス内のすべてのスレッドのために作成されます。 これは、スレッドはすぐにスレッドがフック止め作業を終了呼び出しとしての.asを存在呼び出すまでの罰金を動作します。

プロセスにおけるプロセスではなくスレッドにフックする方法はあります。

役に立ちましたか?

解決

LowLevelKeyboardProcためのSDKドキュメントのこの細かいプリントは非常に重要です。

このフックは、それをインストールしたスレッドのコンテキストで呼び出されます。コールは、フックをインストールしたスレッドにメッセージを送信することにより行われます。そのため、フックをインストールスレッドがメッセージループを持っている必要があります。

言い換えれば、あなたは生きているスレッドを維持する必要がありますし、スレッドがメッセージループをポンプしなければなりません。あなたが今見動作は仕様によって完全である。

他のヒント

として、パーMSDNには、をWH__KEYBOARD ___ LL のアプリケーション固有のグローバルません適用されます。

あなたは、特定のスレッドが使用プロセスのためのフックをインストールする場合の WH ___キーボードの。

ジャストメイン機能にフックを取り付けます。あなたはそれがときにのみ、特定のスレッドの実行が必要な場合は、揮発性のフラグを使用することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top