Я делаю автокликер, и мне нужно настроить его, чтобы щелкать только тогда, когда я удерживаю левой кнопкой мыши - PullRequest
0 голосов
/ 01 февраля 2019
int main()
{
    while (true)
    {
        if (GetAsyncKeyState(VK_LBUTTON))
        {
            mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
            mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
        }
    }
}

Проблема с этим кодом заключается в следующем: он продолжает нажимать, поэтому программа продолжает работать и не перестает щелкать.Мне было интересно, почему и как это исправить.

1 Ответ

0 голосов
/ 01 февраля 2019

Использовать

if ((GetAsyncKeyState(key) & 0x8000) != 0)

С https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-getasynckeystate:

Хотя младший бит возвращаемого значения указывает, была ли клавиша нажата с момента последнего запроса из-заПриоритетная многозадачность Windows, другое приложение может вызывать GetAsyncKeyState и получать бит «недавно нажатый» вместо вашего приложения.Поведение младшего значащего бита возвращаемого значения сохраняется строго для совместимости с 16-разрядными приложениями Windows (которые не являются приоритетными) и на него не следует полагаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...