我对Windows API很陌生,想知道如何查看其他进程收到的消息。作为一个例子,我想得到记事本的HWND,并查看发送到该窗口的所有消息。我用C / C ++编写。
谢谢
答案 0 :(得分:7)
您可以使用SetWindowsHookEx
功能,WH_CALLWNDPROC
或其他类型的挂钩,here就是一个例子。
WH_CBT
可以为您提供很好的机会,因为您可以从中获取HCBT_CREATEWND
代码并在创建窗口之前将其发送给您,从而为您提供提供你自己的窗口proc而不是真实窗口的可能性,然后能够用它获得所有可能的消息。
请记住,更大的可能性也意味着更大的责任。假设您“子类化”某个窗口,提供您的窗口过程,如果您的应用程序设置了一个钩子退出,接下来您将看到的是应用程序,您正在查看的消息,如果您没有放置该地址,则会崩溃原始窗口会回到它所属的位置。这种挂钩的好处是能够等待某个窗口(比如某个窗口类或名称)来创建并进入之前的 你甚至可以创建任何你感兴趣的窗口。
答案 1 :(得分:1)
您想查看SetWindowsHookEx
答案 2 :(得分:1)
您正在寻找Windows Hooks。
http://msdn.microsoft.com/en-us/library/ms997537.aspx
您可以使用 CallWndProc 挂钩程序在目标进程中捕获 SendMessage 。