主要思想:
- 第一次按下键激活整个脚本,例如按 Enter
- 如果在激活后 5 秒内按顺序按下并释放特定键,则执行脚本的主要部分。如果在此期间按下任何其他键,则脚本退出
我知道如何设置计时器,以及如何检查当前时间是否按下了某个键(使用 GetKeyState),但我不知道如何检查在特定时间范围内是否按下了某个键(可能释放了),直到计时器用完为止。
答案1
您可以使用热键和热字符串来捕获键序列。
如果按下其他键,这不会提前退出 5 秒的时间段,但也不会发生任何事情。如果您想在检测到某些击键时立即退出,您可以进入一个循环,将 A_LastKey 与已知的“ok”键进行比较,如果检测到其他内容,则提前退出。
#Persistent
hotstringsDisabled:=True
Return
; hotkey definition to enable hotstrings
Enter::
hotstringsDisabled:=False
SetTimer, DisableHotstrings, -5000 ; run once after 5 seconds
Return
DisableHotstrings:
hotstringsDisabled:=True
Return
; hotstring definitions...
; make as many as you like using this form...
; b0=don't backspace, c=case sensitive
:*b0c:custom::
If hotstringsDisabled
Return
;your code to do something useful goes here...
Msgbox % "A_ThisHotkey=" A_ThisHotkey "`n" "A_LastKey=" A_LastKey
Return
初始热键也可以组合(取决于您想如何操作)...
Enter::
hotstringsDisabled:=False
Sleep 5000
hotstringsDisabled:=True
Return
Sleep 5000
如果您想通过其他一些键或类似键提前退出,则可以用循环替换该语句。