-3
我试图如在下面的代码中提到打印挂钩过程GetMsgProc内的消息来调用GetMsgPrc:无法使用WH_GETMESSAGE钩
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);
}
// ---------- -------------------------------------------------
我的猜测是,对于每个键盘或鼠标输入,应该打印该消息。但我无法弄清楚为什么没有发生。能否请你帮忙。
如果我没有记错,该钩子只捕获窗口句柄中的_sent_消息。 –
@ 500-InternalServerError:不一定。如果我用WH_MOUSE_LL替换WH_GETMESSSAGE,它会起作用。 – Roger1990
@ 500-InternalServerError。 'WH_GETMESSAGE'捕获通过'(Peek | Get)Message()'传递的任何消息,无论它是发布,发送,广播等。你可能会想'WH_CALLWNDPROC/RET',它捕获所有发送的消息到一个窗口。 –