【问题标题】:auto hot key script, 2 functions with 1 press自动热键脚本,1 次按下 2 个功能
【发布时间】:2016-05-11 02:38:27
【问题描述】:

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

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

这是我目前可用的自动点击器

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

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

【问题讨论】:

  • setTimer 也可能是实现您想要的另一种方式

标签: autohotkey


【解决方案1】:

这是一个使用计时器的解决方案。 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,默认Key Delay 将是每次按键10 毫秒。此外,如果未配置 SetBatchLines,您的脚本将等待 每执行行 10 毫秒。我建议尝试使用这些参数,以便找到仍然足够快点击的可能的最大延迟。这将节省一些资源并最大限度地减少某种溢出情况的风险。

【讨论】:

  • 这非常有效。谢谢,我会试着理解为什么我自己会这样。
【解决方案2】:

你不能像那样运行两个“Sleeps”。您最终将在 send e 之后等待 1 秒钟,然后再返回您的 Click Left。使用计数器和一些数学。而且,由于5 ms 可能太快,AHK 甚至无法处理,请尝试使用 20(它甚至可能仍然太快 - 您需要最大的数字,但仍允许最快的鼠标点击)。

试试:

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

如果这对您有用,请告诉我们。 . .

【讨论】:

  • 这个垃圾邮件点击,但 E 根本不响。
  • 可能与Sleep 5 的时间太短有关(如上面@MCL 的回答中所述。我使用更大的间隔(1000)对其进行测试,以便每隔一段时间发送一次哔声秒和每 5 秒 (IfEqual, i, 5) 显示一个 MsgBox。这有效,但 SetTimer 技术也有效......
猜你喜欢
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多