2011-12-26 12 views
9

"システムレベル"でウィンドウフックがどのように機能するかわかりません。 MSDNは非常に簡単に何が起こっているのか触れる:ウィンドウフック - どのように機能するのですか?

フックが アプリケーションが でシステムをメッセージトラフィックを監視するためのサブルーチンをインストールして、特定の種類のメッセージを処理することができ、システムのメッセージ処理機構ではポイントですそれらが ターゲットウィンドウプロシージャに到達する前に各メッセージは、ウィンドウのメッセージキューに追加される前に、それは最初にローカル/グローバルフックにメッセージをお送りします

enter image description here

、:

私の最高の推測では、以下のようなものです彼らのフックの手順に応じて、何かをする可能性があります。すべてのグローバルフックとローカルフックの後、メッセージは最終的にウィンドウメッセージキューに追加されます。

しかし、MSDNは、フックの種類のいくつかのために、それが監視することを言いますeventsnotificationsなど

例はWH_MOUSE_LLフックです:

が低監視フックプロシージャをインストールします。レベルマウス 入力イベント。詳細については、LowLevelMouseProcフック プロシージャを参照してください。

eventsと言うと、私たちはウィンドウメッセージを出しているのですか、それとも何か他の意味ですか?

私は間違っていますか?

+8

フリーハンド図の画像のボーナススタイルポイント。 – rkb

+1

ここに少し説明がありますhttp://b.1asphost.com/mmbaig/Tutorials/Windows_Hooks.html –

+2

多くのフックはメッセージベースです。しかし、あなたが話しているフックではなく、実際には "イベント"によって引き起こされます。 * Windowsはメッセージを作成し、それをフォーカスのあるウィンドウのメッセージキューに入れます。アプリケーションがGet/PeekMessageを呼び出し、メッセージキューからマウスメッセージを取得しようとしているときに実行されるグローバルフックWH_MOUSEと比較してください。したがって、メッセージによって実際にトリガーされます。 –

答えて

1

はい、これはWindowsメッセージのメカニズムで、ターゲットウィンドウプロシージャ(メッセージループ)に到達する前にこのデータ(メッセージ)を処理できます。

他のプロセスウィンドウをフックする場合は、DLLでこれを行うだけで、DLL注入を使用してライブラリを他のプロセスに注入することができます。

関連する問題