Elberer
Elberer

Reputation: 11

SetWindowsHookEx Mouse Hook

How to put a hook on the mouse that catches mouse clicks, excluding SendInput (hardware pressing)?

my handler code:

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);}

I put the hook this way:

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

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

UnhookWindowsHookEx(hook);

This code catches all events, including SendInput

Upvotes: 0

Views: 44

Answers (0)

Related Questions