タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

Hookに関するn314のブックマーク (2)

  • Hook

    Windowsの提供する機能のなかでも、最も怪しい使い方をするのがフックと呼ばれるもの。フックなんて知らなくたって大抵のものなら何とかなるけど、一度その甘美な魅惑に取り付かれてしまうと反射的に『フックを使って...』なんて考えるようになりかねないかなり危険な機能と言えるだろう。 フックというのはスレッドに取り付ける『盗聴器』のようなもの。スレッドに到着するメッセージをこっそり読み取って小細工をしてしまおうというのが基原理。殆ど1〜2行で説明が終わってしまうことからもわかるように、フックを操作するために必要なAPIはかなり少なく3つ (『使われなくなりました』と明記されているものとコールバック関数のプレースホルダーを除く)しかない。具体的にはフックの取り付け、フックの解除、そして受け取ったメッセージの伝播というものがAPIとして提供されているだけ。一見簡単そうに見えるフックなんだけど、意外

  • グローバルフックを使う

    フックには、スレッド固有のフックとグローバルなフックがありますが、今回はグローバルフックを使ってみます。 グローバルフックを使えば、ウインドウズがアプリケーションに送るメッセージを監視することができます。マウスカーソルを自動的に動かしたり、ボタンを勝手に押してくれるようなソフトもフックを使っていると思われます。 グローバルフックのフックプロシージャはDLLに置かないといけないので、グローバルフックを使うプログラムではDLLを作る必要が出てきます。また、DLLはアプリケーション1つにつき1つずつ読み込まれて、それぞれが独自のデータ領域を持つようなのですべてのDLLで共通に使用できる共有領域を作る必要があります。この領域には、フック プロシージャのハンドルを格納します。これを共有領域に置かないと複数のフックを組み込んだときにうまく動かないことがあります。 フックの種類 フックの種類を示します

  • 1