AutoHotKey在任何键上运行程序

时间:2013-06-07 08:49:01

标签: batch-file keyboard-shortcuts autohotkey

我想在使用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

5 个答案:

答案 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