我刚刚开始使用AutoHotKey,我想要制作一个脚本,它每秒点击一次,然后按住鼠标右键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
}然而,这是行不通的。有没有解决这个问题的方法,还是我对这个脚本采取了完全错误的方法?
发布于 2017-11-23 09:48:46
您确实在代码中犯了错误,在底部您确实让返回命令到循环中,这是不可能的。(这个返回命令将用于!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也是活动的。
发布于 2017-11-24 03:58:22
实际上,我找到了一种方法,通过在循环中嵌套一个循环来显着地压缩它(并且更快地打破循环)。
!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发布于 2017-11-24 21:35:49
一个更好的方法是使用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
returnhttps://stackoverflow.com/questions/47449597
复制相似问题