Windows 无法使用WH_GETMESSAGE挂钩调用GetMsgPrc

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

我正试图在钩子过程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 = 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 InternalServerError
WH_GETMESSAGE
捕获通过
(Peek | Get)message()
传递的任何消息,无论它是发布、发送、广播等。您可能会想到WH_CALLWNDPROC/RET,它捕获发送到窗口的任何消息。@RemyLebeau:这与上述问题有点脱离上下文。WH_CALLWNDPROC是否连接到internet explorer中发生的事件?