我想在使用AutoHotKey
按任何键时运行程序类似的东西:
AnyKey::Run, D:\my\program\to\run\on\any\key.bat
EDIT2: 这段代码完美无缺:
#InstallKeybdHook
SetTimer, AnyKeyPressed, 100
AnyKeyPressed:
if( A_TimeIdlePhysical < 100 ){
Run, D:\my\program\to\run\on\any\key.bat
}
^!p::pause
答案 0 :(得分:2)
一个简单的解决方案:
#InstallKeybdHook ; this MUST be called at the start of your script
AnyKeyPressed() ; returns a 1 if any keyboard key is pressed, else returns 0
{
if( A_TimeIdlePhysical < 25 )
return 1
return 0
}
请注意,如果按任意键或按住该键,此函数将返回1,因此请相应地更改代码。
会发生什么; #InstallKeybdHook
会将A_TimeIdlePhysical
的行为更改为仅查找键盘事件。
答案 1 :(得分:2)
您必须定期检查A_TimeIdlePhysical
,而不是仅在脚本启动时检查一次:
#InstallKeybdHook
SetTimer, CheckActivity, 100
Exit
CheckActivity:
if(A_TimeIdlePhysical < 100) {
Run, myNastyPictureMaker.bat
ExitApp
}
return
您可以将SetTimer
用于重复性任务。检测到第一个活动时脚本停止;否则,它会每100毫秒拍一张照片(或者你设置的任何超时)。
P.S:我希望你只想在你的私人电脑上使用这样的剧本而不是一些公共电脑...
答案 2 :(得分:0)
使用Input,AnyKey,L1等待按任何键。 L1表示按下一个键后,不需要[end]键。您可以检查AnyKey的内容,但实际上并不需要。
答案 3 :(得分:0)
也许已知密钥列表可能有效?
keys = ``1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./
Loop Parse, keys
Run, D:\my\program\to\run\on\any\key.bat
return
这就是我想到的。
答案 4 :(得分:0)
#Persistent
#InstallKeyBDHook
SetTimer, WaitingForKey, 100
Return
WaitingForKey:
Input, LogChar, B I L1 V
LogWord := LogWord . LogChar
ToolTip, % LogWord
;Run, D:\my\program\to\run\on\any\key.bat
LogWord:=
Return
^!p::pause