【发布时间】:2014-04-01 00:52:01
【问题描述】:
我正在尝试使用WH_GETMESSAGE 挂钩监视另一个窗口句柄(特别是WM_TIMER)发送的消息,但似乎我只能获取接收者句柄,而不是发送者。这是我的代码:
LRESULT WINAPI GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam){
if (nCode < 0){
return CallNextHookEx(hGetMsgHook, nCode, wParam, lParam);
}
else{
MSG* msg = (MSG*)lParam;
HWND window = msg->hwnd;
unsigned int msgCode=LOWORD(msg->message);
char* className = new char[50];
if (msgCode == WM_TIMER){
GetClassNameA(window, className, 50);
//className of the receiver handle
}
}
return CallNextHookEx(hGetMsgHook, nCode, wParam, lParam);
}
如何获取发件人hwnd?
【问题讨论】:
-
How can my app find the sender of a windows message? 的可能重复项 - 如果您查看该问题,您会发现这是不可能的。我是previously asking a similar question。对于 WM_TIMER 虽然它更复杂,因为这是一条伪消息,而不是“真实”消息。
-
我不明白。当我使用 Spy++ 时,它确实显示该消息是从该句柄窗口发布的,这意味着 Spy++ 以某种方式捕获了该消息。真是头疼……
-
WM_TIMER 不是已发送的消息。没有发件人。 Spy++ 显示的是收件人而不是发件人。
标签: winapi