调用SendInput时不标记GetKeyState吗?

时间:2019-02-06 05:04:12

标签: c++

我有一个无限的while循环,该循环不断检查是否按住了我的鼠标左键,无论如何,这一切都非常好,当我注释掉SendInput()函数(强制左键单击)时,它就可以工作了。但是我遇到的问题是我希望能够按住左键单击,并使其在一定间隔内强制单击,而不用GetAsyncKeyState将其标记为单击。当我按住鼠标时,它实际上只双击了一次,从理论上讲它只是在自动取消。

我正在制作一个自动点击器,我曾经尝试找到src,但是我还没有找到一个可以证明我正在尝试做我的尝试的人。

void autoclick(int cps) {

    while (1) {
        if (GetAsyncKeyState(VK_LBUTTON) & 0x8000) {
                leftClick();
                std::cout << "click";
                Sleep(1000 / cps);
        }
    }
}
void leftClick(){
    INPUT    Input = { 0 };
    // left down 
    Input.type = INPUT_MOUSE;
    Input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
    ::SendInput(1, &Input, sizeof(INPUT));

    // left up
    ::ZeroMemory(&Input, sizeof(INPUT));
    Input.type = INPUT_MOUSE;
    Input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
    ::SendInput(1, &Input, sizeof(INPUT));
}

我希望能够按住鼠标按钮,并使其在按住鼠标时模拟点击,而当我放开按钮时,它将停止单击。 (注意:这些函数正在使用多线程,因此while循环本身不会对程序流程造成任何问题)

0 个答案:

没有答案