如果按住鼠标左键,如何循环鼠标单击

时间:2020-06-17 18:59:37

标签: c++

我正在尝试制作一个自动点击器。按住LBUTTON时,应重复MOUSEEVENTF_LEFTDOWN和MOUSEEVENTF_LEFTUP。

这是我到目前为止所拥有的。它不会重复,它会双击。

#include <iostream>
#include<Windows.h>
using namespace std;

void menu()
{
    cout << "Press 'F4' to enable and 'F5' to disable autoclicker\n";
}

void clicker()
{
    bool click = false;

    while (true)
    {
        if (GetAsyncKeyState('X'))
        {
            click = true;
        }

        else if (GetAsyncKeyState('Z'))
        {
            click = false;
        }

        if (click == true)
        {
                while (GetKeyState(VK_LBUTTON))
                {
                    mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
                    mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
                    Sleep(100);
                }   
        }

    }
}

int main()
{
    menu();
    clicker();
    return 0;
}

感谢您的帮助!谢谢

1 个答案:

答案 0 :(得分:0)

您没有给目标应用程序足够的时间来检测按键,您应该使用SendInput(),因为它已被弃用。

#include <chrono>
#include <thread>

INPUT LeftButton = { 0 };
LeftButton.type = INPUT_MOUSE;
LeftButton.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
SendInput(1, &LeftButton, sizeof(INPUT));

std::this_thread::sleep_for(std::chrono::milliseconds(5));

LeftButton.mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(1, &LeftButton, sizeof(INPUT));