首页 > 解决方案 > SetWindowsHookEx 鼠标挂钩

问题描述

如何在捕捉鼠标点击的鼠标上放置一个钩子,不包括 SendInput(硬件按下)?

我的处理程序代码:

LRESULT CALLBACK mouseProc(int Code, WPARAM wParam, LPARAM lParam){
MOUSEHOOKSTRUCT* pMouseStruct = (MOUSEHOOKSTRUCT*)lParam;
if (pMouseStruct != nullptr) {
    switch (wParam) {
    case WM_LBUTTONDOWN:
        std::cout << "WM_LBUTTONDOWN";
        break;
    case WM_LBUTTONUP:
        std::cout << "WM_LBUTTONUP";
        break;
    case WM_RBUTTONDOWN:
        std::cout << "WM_RBUTTONDOWN";
        break;
    case WM_RBUTTONUP:
        std::cout << "WM_RBUTTONUP";
        break;
    default:
        break;
    }
}
return CallNextHookEx(NULL, Code, wParam, lParam);}

我把钩子这样放:

HHOOK hook = SetWindowsHookEx(WH_MOUSE_LL, mouseProc, NULL, 0);

MSG message;
while (GetMessage(&message, NULL, 0, 0) > 0)
{
    TranslateMessage(&message);
    DispatchMessage(&message);
}

UnhookWindowsHookEx(hook);

此代码捕获所有事件,包括 SendInput

标签: c++csetwindowshookex

解决方案


推荐阅读