C ++切换以按住鼠标左键吗?

时间:2019-09-29 06:16:30

标签: c++ click

我如何制作一个既可以按住鼠标左键又可以通过按键切换的小程序?我可以将其切换为鼠标左键以不断单击,但是我不知道如何按住它。

void Clicker2()
{
    while (1)
    {
        if (GetAsyncKeyState('U')) // U toggles on
        {
            click = true;
        }

        if (GetAsyncKeyState('I')) //I toggles off
        {
            click = false;
        }

        if (click == true)
        {
            mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
            mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0); 
        }
    }
}

1 个答案:

答案 0 :(得分:0)

在使用切换开关时,您要检查GeyAsyncKeyState()的返回值(特别是最低有效位),可以通过对结果进行按位与运算来实现。

我已经简化了您的代码,并将其转换为建议使用的SendInput()。

int main()
{
    INPUT input{ 0 };
    input.type = INPUT_MOUSE;

    bool bClick = false;

    while (true)
    {
        //toggles it on and off
        if (GetAsyncKeyState('U') &1)
            bClick = !bClick;

        if (bClick)
        {
            input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
            SendInput(1, &input, sizeof(INPUT));
        }
        else
        {
            input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
            SendInput(1, &input, sizeof(INPUT));
        }
    }

    return 0;
}