【问题标题】:Simple AutoClicker clicks only once instead of number of times简单的 AutoClicker 只点击一次而不是点击次数
【发布时间】:2019-09-20 16:23:09
【问题描述】:

好的,所以我尝试了一个简单的自动点击器的代码。我有一个按钮,我想点击它,然后稍等一下,可能是 500 毫秒,然后程序应该在当前光标位置点击 10 次,每次点击之间有 300 毫秒的延迟

由于某种原因,它只点击一次,而不是像我想要的那样点击 10 次

private void Button3_Click(object sender, EventArgs e) {

        System.Threading.Thread.Sleep(500);
        for (int i = 0; i < 10; i++)
        {
            mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
            mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
            System.Threading.Thread.Sleep(300);

            mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
            mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
        }

【问题讨论】:

    标签: c# visual-studio


    【解决方案1】:

    在鼠标按下和鼠标抬起之间稍作延迟。此外,如果您的代码正常工作,每个循环会单击两次。所以 20 次。

        System.Threading.Thread.Sleep(500);
        for (int i = 0; i < 10; i++)
        {
            mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
            System.Threading.Thread.Sleep(50);
            mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    
            System.Threading.Thread.Sleep(250);
        }
    

    【讨论】:

    • 我认为这也可能是问题...操作系统可能没有将 2 个鼠标事件紧挨着注册
    • 谢谢!!完美运行。你能解释一下为什么需要在 down 和 up 之间设置延迟吗?
    • @GhnbTrcv 我没有给你一个有根据的答案,我只从经验中知道这一点。但我认为 Zakk 是对的。
    【解决方案2】:
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
    
        System.Threading.Thread.Sleep(300);
    
        for (int i = 0; i < 10; i++)
        {
            mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
            mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
        }
    

    【讨论】:

    • 无法正常工作。我希望每次点击之间有 300 毫秒的延迟
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多