这应该很容易! I've checked out this thread,但它无济于事。
我似乎无法使用热键突破循环。我们的想法是您可以使用一个热键来启动和停止循环过程。
似乎timeron
的价值一旦开始就永远不会进入循环。
以下是一个示例脚本:
#singleinstance force
timeron = 0
return
!f7::
if(timeron){
timeron = 0
msgbox Okay, the loop is off.
}else{
timeron = 1 ;if this is not set to one, the loop will not begin
msgbox Turning on the loop.
gosub, STARTLOOPING
}
RETURN
STARTLOOPING:
;do this over and over
loop{
if(!timeron)
break
;now wait for the right length of time before continuing the loop
msgbox, The loop yet continues....
Sleep, 5000
if(!timeron)
break
}
RETURN
我在这里缺少什么?
答案 0 :(得分:2)
由于你的!F7永远不会结束,再次按下!F7会被忽略。 默认情况下,每次允许的每个热键只有一个线程。
添加
#MaxThreadsPerHotkey 2
作为脚本的第二行,然后第二行!F7按下可以停用循环。
答案 1 :(得分:2)
为什么不使用计时器呢?它们允许您的脚本在定时器运行之间执行其他操作,从而允许热键中断它们:
timeron := false
Exit
!F7::
if(timeron) {
timeron := false
SetTimer, MyTimer, Off
} else {
timeron := true
; Call GoSub once if you want the subroutine
; to fire immediately at the beginning
GoSub, MyTimer
; Then let the timer repeat it
SetTimer, MyTimer, 5000
}
return
MyTimer:
Msgbox, Looping like crazy!
return
您始终可以使用计时器替换循环的功能。如果你有某种for循环/计数器,你可以使用全局变量。