新人求助,如何即时判断跳出循环
ahk吧
全部回复
仅看楼主
level 1
刚接触ahk,自己试着写了个脚本,
功能是按下F11循环,按下F12退出循环。
一开始是这样写的:
F11::
loop{
send {T}
sleep 10000
if GetKeyState("F12","P") ;
break
}
return
运行后发现因为sleep时间比较长,导致判定按下F12的时间也比较长,也就是要每隔10秒才判断一次F12按下
后面想了个笨办法,改成了:
F11::
loop{
send {T}
if GetKeyState("F12","P") ;
break
sleep1000
……重复10遍……
if GetKeyState("F12","P") ;
break
sleep1000
}
return
来实现10秒循环,但是每隔1秒来判断是否中断循环,
运行了一下倒是可以勉强实现功能,
但是写得实在比较丑陋,而且也不是即时判断,
不知道正统途径是怎么实现在一个较长周期的循环里,即时判定按下某个键来中断循环?
2025年07月11日 10点07分 1
level 5
就用你的方法,可以把10次粘贴的代码弄成一个循环,这样就好快一点点了。
另外,可以单独把F12定义为一个热键,在F12的代码里面设置全局变量,这样上面的10次循环就不用GetKeyState,而是直接判断一个全局变量值。
2025年07月14日 08点07分 2
level 5
stoped := false
F11::
stoped := false
loop{
send {T}
Loop 10{
sleep 1000
if stoped
break
}
if stoped
break
}
Return
F12::
stoped := true
Return
2025年07月14日 09点07分 3
level 11
第一种方法
1、获取当前时间(定义变量s)
2、时间变量增加10秒(定义新变量ss)
3、loop循环判断(时间可改毫秒更精确)
4、循环里面先判断f12是否按下,然后判断s>=ss跳出循环或者刷新循环(注意变量需刷新的)
第二种方法
1、定时器打断法(ahk为单线程强制打断即可)
2025年07月15日 08点07分 4
1