2017-02-15 19 views
1

誰かが、特定のウィンドウ上の特定のボタンをマウスでクリックするのを傍受するために使用するWindows API関数を見つけるために私を導くことができますか?私はspy ++を使用しており、ファインダツールをボタンやウィンドウ内の任意のものに移動すると、ハンドラや他のものに関する情報を読むことができることを学びました。そこで、何らかのアクションが実行される前に、マウスのクリックを傍受し、コードを挿入する方法があります。これについて何か考えを共有してくれてありがとうございます。ウィンドウのマウスクリックを傍受する

答えて

2
私はこれにアプローチするカップルのさまざまな方法を考えることができ

  1. あなたがターゲットウィンドウの中WH_CALLWNDPROCメッセージフックをインストールするためにSetWindowsHookEx()を使用することができますそして、フックコールバックは、ターゲットウィンドウ自体にWM_LBUTTON(DOWN|UP)、またはターゲットウィンドウの親にBN_CLICKEDのようなウィンドウメッセージを処理することができます。注意点は、フックをターゲットプロセスに注入できるように、コールバックをDLLに実装する必要があることです。 GetWindowThreadProcessId()を使用してターゲットウィンドウのスレッドIDを取得できます。

    この変形例では、SetWindowsHookEx()WH_GETMESSAGEフックをインストールしてから、PostMessage()を使用して、ターゲットウィンドウにカスタムウィンドウメッセージを投稿することができます。フックコールバックは、SetWindowLongPtr()またはSetWindowSubclass()を使用して、ターゲットウィンドウを直接サブクラス化したり、その親をサブクラス化してさらにメッセージ処理を行うことができます。

  2. SetWinEventHook()を使用して、ボタンクリックなどのイベントを監視することができます。EVENT_OBJECT_INVOKEDWINEVENT_OUTOFCONTEXTフラグを使用する場合、DLLは必要ありませんが、インストールスレッドはアクティブなメッセージループを必要としているため、イベントはプロセスの境界を超えて処理できます。

+0

これは最善の答えですが、コード例が必要です – FindOutIslamNow

1

Windowsフックを設定するには、SetWindowsHookEx APIに電話する必要があります。ここでは、ソースコードとの記事ですが、それは、その使用方法を示します。Hooks and DLLs

+0

@RemyLebeau @RemyLebeau私はこれを行う方法を投稿しました。私と違っていれば、あなた自身の答えを別に投稿してください。 –

関連する問題