Как с помощью глобального хука отменить действие мыши?

205
03 ноября 2018, 14:40

Есть мысль написать ремапер мыши. Но для этого необходимо отменять определённые действия мыши.

Есть кусок кода:

HHOOK myHook;
LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode >= 0)
    {
        if (wParam == WM_LBUTTONDOWN)
        {
            return -1;
        }
    }
    return CallNextHookEx(myHook, nCode, wParam, lParam);
}
int main()
{
    myHook = SetWindowsHookEx(WH_MOUSE_LL, LowLevelMouseProc, NULL, 0); 
    if (myHook != NULL)
        printf("Hook complited;\n");
    else
        printf("Hook not complited.\n");
    MSG msg;
    while (GetMessage(&msg, NULL, 0, 0) > 0)
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    UnhookWindowsHookEx(myHook);
    return 0;
}

Данный код работает только с ЛКМ (ЛКМ полностью перестаёт работать на всех окнах), т.е. если в условии поменять WM_LBUTTONDOWN на, например, WM_RBUTTONDOWN или WM_XBUTTONDOWN, то код перестаёт работать (и ПКМ, и боковая кнопка мыши работают как и должны работать).

Почему оно работает именно таким образом (работает с ЛКМ, но не работает с ПКМ)? И как исправить это (сделать чтобы работало с любыми кнопками мыши)?

READ ALSO
Сортировка компонентов в NetBeans

Сортировка компонентов в NetBeans

Подскажите пожалуйста, как установить сортировку компонентов в пакете по типуРаботаю в IDE NetBenas

154
Google Play Services signInSilently apiexception 4

Google Play Services signInSilently apiexception 4

пилю игру на LIBGDX встроил GPGS у меня такая проблема

157