autohotkey 脚本,按 1 次即可实现 2 个功能

auto hot key script, 2 functions with 1 press

我目前有一个自动点击器,当我按住鼠标左键时,它会以我想要的任何速度垃圾点击。我想在同一个脚本中添加另一个按键。

我希望鼠标保持快速发送垃圾邮件,然后我希望'e'在按住鼠标1键的同时每1秒发送一次垃圾邮件

这是我当前可用的自动答题器

F1::
Suspend Toggle
Return

~$LButton::
While GetKeyState("LButton","P"){
    Click Left   
    Sleep 5

}
return

我想如果我再添加一行就可以了,就像这样,但事实并非如此。这在我看来是有道理的,但我不知道如何编码 :( 我整晚都在搜索自动热键论坛。

F1::
Suspend Toggle
Return

~$LButton::
While GetKeyState("LButton","P"){
    Click Left   
    Sleep 5
    send e
    sleep 1000
}
return

我的目标是我希望鼠标保持快速发送垃圾邮件,然后我希望 'e' 在按住鼠标 1 键时每 1 秒发送一次垃圾邮件

你不能 运行 两个这样的“Sleeps”。在返回 Click Left 之前,您将在 send e 之后等待 1 秒。使用计数器和一些数学。而且,由于 5 毫秒对于 AHK 来说可能太快了,甚至无法处理,请尝试使用 20(它甚至可能仍然太快——你想要最大的数字仍然允许最快的鼠标点击) .

尝试:

~$LButton::
While GetKeyState("LButton","P"){
    Click Left   
    i++
    IfEqual, i, 50
    {
        send e
        i=
    }
    Sleep 20
}
return

让我们知道这是否适合您。 . .

这是一个使用计时器的解决方案。 Timers 的优点是它们不会阻塞当前线程,因此允许同一线程中的后续代码准同步执行。

~$LButton::
    SetTimer, LeftClick, 50
    SetTimer, SendEKey, 1000
return

~$LButton up::
    SetTimer, LeftClick, Off
    SetTimer, SendEKey, Off
return

LeftClick:
    Click, Left
return

SendEKey:
    Send, e
return

一个备注:

我觉得每 5 毫秒点击一次有点过分了。根据您的脚本设置,您无论如何都不会达到这个小延迟。如果您不使用 SendMode Input, the default Key Delay will be 10ms per keypress. Additionally, if SetBatchLines 未配置,您的脚本将等待 10 毫秒每行执行 。我建议尝试使用这些参数,以便找到仍能足够快地点击的 最大可能延迟 。这将节省一些资源并最大限度地减少某种溢出情况

的风险