我是 Windows API 的新手,想知道如何查看另一个进程收到的消息。例如,我想获取记事本的 HWND,并查看发送到该窗口的所有消息。我用 C/C++ 编写代码。
谢谢
最佳答案
您可以使用 SetWindowsHookEx
函数,带有 WH_CALLWNDPROC
或其他类型的钩子(Hook),以及 here是一个例子。
WH_CBT
可以为您提供很好的机会,因为您可以从中获取 HCBT_CREATEWND
代码,并且它会在窗口之前发送给您创建,从而使您有可能提供自己的窗口过程而不是真实的窗口过程,然后能够使用它获取所有可能的消息。
但请记住,更大的可能性也意味着更大的责任。假设你“子类化”了一些窗口,提供了你的窗口过程,如果你的应用程序设置了一个钩子(Hook)退出,接下来你会看到的是你正在查看其消息的应用程序,如果你没有输入它的地址就会崩溃原来的窗口过程回到它所属的地方。这种 Hook 的好处是能够等待创建特定窗口(比如具有特定窗口类或名称)并在之前进入该进程甚至会创建您感兴趣的任何窗口。
关于c++ - WINAPI:查看来自其他进程的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1980329/