Autohotkey 势不可挡的脚本问题

Autohotkey 势不可挡的脚本问题,autohotkey,Autohotkey,我有一个使用多个鼠标移动的脚本,需要时,我按F3键停止移动,强制重新加载,或按ESC键停止退出应用程序的移动。它在正常速度下工作正常,没有问题 问题是:当我减少鼠标速度并增加鼠标播放时,脚本变得不可阻挡:我多次按F2、F3和ESC键(试图使其停止),但脚本忽略它并继续运行鼠标移动 下面是我的问题的一个小例子: SendMode Input $F1:: SetDefaultMouseSpeed, 50 SetMouseDelay, 30 Mousemove, 200, 200 Mousemov

我有一个使用多个鼠标移动的脚本,需要时,我按F3键停止移动,强制重新加载,或按ESC键停止退出应用程序的移动。它在正常速度下工作正常,没有问题

问题是:当我减少鼠标速度并增加鼠标播放时,脚本变得不可阻挡:我多次按F2、F3和ESC键(试图使其停止),但脚本忽略它并继续运行鼠标移动

下面是我的问题的一个小例子:

SendMode Input

$F1::
SetDefaultMouseSpeed, 50
SetMouseDelay, 30

Mousemove, 200, 200
Mousemove, 600, 600
Mousemove, 200, 200
Mousemove, 600, 600
Mousemove, 200, 200
Mousemove, 600, 600
Mousemove, 200, 200
Mousemove, 600, 600
Mousemove, 200, 200
Mousemove, 600, 600
Mousemove, 200, 200
Mousemove, 600, 600
Mousemove, 200, 200
Mousemove, 600, 600
Mousemove, 200, 200
Mousemove, 600, 600
Mousemove, 200, 200
Mousemove, 600, 600
Mousemove, 200, 200
Mousemove, 600, 600
Mousemove, 200, 200
Mousemove, 600, 600

SoundPlay, *48
return

$F2:: Pause
$F3:: Reload
$ESC:: ExitApp
为什么会发生这种情况?我如何修复它(即使在低速+高延迟的情况下,我如何停止脚本)?
ps:F1键启动鼠标移动序列。

速度非零的鼠标移动不能被同一AHK脚本中的另一个热键中断,因为自动热键在内部是单线程的(它只是线程式的行为),并对每个鼠标微动执行一次,直到达到您指定的总距离

解决方案:

  • 检查每次鼠标移动后是否按下了热键,但这不是即时的
  • 实现您自己的鼠标移动,在每次1px移动后进行检查
  • 使用带有热键的主脚本运行/暂停/停止子脚本:

    停止:琐碎,使用
    正在运行:子进程应隐藏托盘图标,否则它将在进程关闭后停留
    暂停:非常重要,但也有(另请参见基础)


具有非零速度的鼠标移动不能被同一AHK脚本中的另一个热键中断,因为自动热键在内部是单线程的(它只是线程式的行为),并且在达到您指定的总距离之前,对每个鼠标微动执行一次

解决方案:

  • 检查每次鼠标移动后是否按下了热键,但这不是即时的
  • 实现您自己的鼠标移动,在每次1px移动后进行检查
  • 使用带有热键的主脚本运行/暂停/停止子脚本:

    停止:琐碎,使用
    正在运行:子进程应隐藏托盘图标,否则它将在进程关闭后停留
    暂停:非常重要,但也有(另请参见基础)