4

私は Windows API にまったく慣れていないので、別のプロセスが受信したメッセージを覗く方法を知りたいと思っています。例として、たとえばメモ帳の HWND を取得し、このウィンドウに送信されるすべてのメッセージを確認したいと考えています。C/C++ でコーディングしています。

ありがとうございました

4

3 に答える 3

7

SetWindowsHookEx関数を使用しWH_CALLWNDPROCたり、他のタイプのフックを使用したりできます。ここに例を示します。

そこからコードを取得でき、ウィンドウが作成される直前にコードが送信されるWH_CBTため、素晴らしい機会が得られます。したがって、実際のウィンドウ プロシージャではなく独自のウィンドウ プロシージャを提供して、すべてのメッセージを取得できる可能性があります。それと可能です。HCBT_CREATEWND

ただし、可能性が大きくなるということは、責任も大きくなることを意味します。いくつかのウィンドウを「サブクラス化」して、ウィンドウ proc を提供するとします。フックを設定したアプリケーションが終了すると、次に表示されるのは、覗いていたメッセージのアプリケーションが、アドレスを入力しないとクラッシュすることです。元のウィンドウ プロシージャが属する場所に戻ります。この種のフックの利点は、特定のウィンドウ (特定のウィンドウ クラスまたは名前など) が作成されるのを待機し、関心のあるウィンドウが作成される前にそのプロセスに入ることができることです。

于 2009-12-30T14:02:52.423 に答える
1

SetWindowsHookExを調べたい

于 2009-12-30T14:00:20.820 に答える
1

Windows フックを探しています。

http://msdn.microsoft.com/en-us/library/ms997537.aspx

CallWndProcフック プロシージャを使用して、ターゲット プロセスでSendMessageをトラップできます。

于 2009-12-30T14:00:24.363 に答える