mouse_event почему не ловит клик? if (state & 0x0004) C++

Рейтинг: 1Ответов: 1Опубликовано: 08.01.2023

Пишу кликер который должен ловить события мышки и обрабатывая их, выводить результат в консоль.

При указании абсолютного значения (0x8000) - работает только первое по списку, при конкретизации (0x0002, 0x0008) - нет.

Как исправить? Где копать и на что грешить?

if (state & 0x0002)
{
    std::cout << "LBM" << endl;
    mouse_event(0x0002, 0, 0, 0, 0);
    Sleep(50);
}
else if (state & 0x0008)
{
    std::cout << "RBM" << endl;
    mouse_event(0x0008, 0, 0, 0, 0);
    Sleep(50);
}

Ответы

▲ 0

Протупил, мой косяк.

Это и есть корень проблемы.

auto state = GetAsyncKeyState(VK_LBUTTON);

вызов GetAsyncKeyState (VK_LBUTTON) всегда возвращает состояние левосторонней физической кнопки мыши, независимо от того, преобразована она в левостороннюю или правостороннюю логическую кнопку мыши.

Детальнее искать тут: http://vsokovikov.narod.ru/New_MSDN_API/Keyb_input/fn_getasynckeystate.htm

Также ошибка была в auto state Об этом тут: https://learn.microsoft.com/ru-ru/cpp/cpp/auto-cpp?view=msvc-170