【发布时间】:2009-12-30 13:57:28
【问题描述】:
我对 Windows API 很陌生,想知道如何查看另一个进程收到的消息。例如,我想获取记事本的 HWND 并查看发送到此窗口的所有消息。我用 C/C++ 编写代码。
谢谢
【问题讨论】:
我对 Windows API 很陌生,想知道如何查看另一个进程收到的消息。例如,我想获取记事本的 HWND 并查看发送到此窗口的所有消息。我用 C/C++ 编写代码。
谢谢
【问题讨论】:
您可以使用SetWindowsHookEx 函数、WH_CALLWNDPROC 或其他类型的钩子,here 就是一个例子。
WH_CBT 可以为您提供很好的机会,因为您可以从中获取HCBT_CREATEWND 代码,并且它会在创建窗口之前发送给您,因此您可以提供您的拥有自己的window proc而不是真实的,然后能够使用它获取所有可能的消息。
但请记住,更大的可能性也意味着更大的责任。假设您“子类化”了某个窗口,提供了您的窗口 proc,如果您的设置挂钩的应用程序退出,接下来您将看到的应用程序是您正在查看其消息的应用程序,如果您没有输入原始窗口 proc 回到它所属的位置。这种挂钩的好处是能够等待创建某个窗口(例如使用某个窗口类或名称)并进入该进程之前甚至会创建您感兴趣的任何窗口。
【讨论】:
你想调查SetWindowsHookEx
【讨论】:
您正在寻找 Windows 挂钩。
http://msdn.microsoft.com/en-us/library/ms997537.aspx
您可以使用 CallWndProc 钩子程序在目标进程中捕获 SendMessage。
【讨论】: