Windows 无法使用WH_GETMESSAGE挂钩调用GetMsgPrc
我正试图在钩子过程GetMsgProc中打印一条消息,如下代码所述:Windows 无法使用WH_GETMESSAGE挂钩调用GetMsgPrc,windows,winapi,hook,Windows,Winapi,Hook,我正试图在钩子过程GetMsgProc中打印一条消息,如下代码所述: LRESULT WINAPI GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam) { printf("inside hook proc"); return CallNextHookEx(getmsghook, nCode, wParam, lParam); } void main() { HINSTANCE hins; hins = Ge
LRESULT WINAPI GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)
{
printf("inside hook proc");
return CallNextHookEx(getmsghook, nCode, wParam, lParam);
}
void main()
{
HINSTANCE hins;
hins = GetModuleHandle(NULL);
getmsghook = SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC) GetMsgProc, hins, 0);
MSG message;
while (GetMessage(&message, NULL, 0, 0))
{
TranslateMessage(&message);
DispatchMessage(&message);
}
UnhookWindowsHookEx(getmsghook);
}
//-----------------------------------------------------------
我的猜测是,对于每一个键盘或鼠标输入,信息应该被打印出来。但我不明白为什么没有发生。请帮忙。全局钩子必须在.DLL中实现,唯一的例外是低kevel键盘和鼠标钩子。检查
SetWindowsHookEx
的返回值,该值可能为空。如果我没有记错,该钩子只捕获发送到窗口句柄的消息。@500 InternalServerError:不一定。如果我用WH_MOUSE_LL替换WH_getMessage,它会工作。@500 InternalServerErrorWH_GETMESSAGE
捕获通过(Peek | Get)message()
传递的任何消息,无论它是发布、发送、广播等。您可能会想到WH_CALLWNDPROC/RET,它捕获发送到窗口的任何消息。@RemyLebeau:这与上述问题有点脱离上下文。WH_CALLWNDPROC是否连接到internet explorer中发生的事件?