我刚刚开始使用AutoHotKey,我正在寻找一个脚本,每秒点击一次10次,然后按住鼠标右键3秒,然后重置。我打算在alt + c上激活,如果我按下鼠标左键就会中断。
我提出的脚本
LButton::
BreakLoop = 1
return
!c::
Loop
{
if (BreakLoop = 1)
break
;
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Send, {RButton Down}
Sleep, 3000
Send, {RButton Up}
Return
}
但是,这不起作用。有没有办法解决这个问题,还是我对这个脚本采用了完全错误的方法?
答案 0 :(得分:1)
你确实在代码中犯了一个错误,在底部你确实有返回命令进入循环这是不可能的。 (这个返回命令将需要!c ::并且它必须在循环命令之外输出)
守则必须像:
~LButton::
BreakLoop = 1
return
!c::
Loop
{
if (BreakLoop = 1)
break
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Click
Sleep, 1000
Send, {RButton Down}
Sleep, 3000
Send, {RButton Up}
}
Return
提示:如果你将Lbutton ::改为~Lbutton ::那么默认的LeftButton也是活跃的。
答案 1 :(得分:0)
我实际上能够找到一种方法来显着压缩它(并通过在循环中嵌套循环来更快地打破循环)
!s::
BreakLoop = 1
return
!c::
BreakLoop = 0
Loop
{
Loop 10
{
if (BreakLoop = 1)
break
;
Click
Sleep, 900
}
Send, {RButton Down}
Sleep, 3000
Send, {RButton Up}
}
if (BreakLoop = 1)
Break
;
Return
答案 2 :(得分:0)
更好的方法是使用SetTimer,这允许您在操作序列中的任何一点突破循环。
尝试:
!c::setTimer, doAction, 1000
!s::SetTimer, doAction, Off
doAction:
i += (i <= 14 ? 1 : -13)
if (i == 14)
send, {RButton Up}
else if (i == 11 )
Send, {RButton Down}
else if (i <= 10)
click
return