1

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

5 回答 5

3

您必须A_TimeIdlePhysical定期检查,而不仅仅是在脚本启动时检查一次:

#InstallKeybdHook
SetTimer, CheckActivity, 100
Exit

CheckActivity:
    if(A_TimeIdlePhysical < 100) {
        Run, myNastyPictureMaker.bat
        ExitApp
    }
return

您可以SetTimer用于重复性任务。当检测到第一个活动时脚本停止;否则,它将每 100 毫秒(或您设置的任何超时)拍摄一张照片。

PS:我希望你只想在你的私人电脑上使用这样的脚本,而不是一些公开的电脑......

于 2013-06-07T17:20:05.987 回答
3

一个简单的解决方案:

#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只查找键盘事件。

于 2013-06-07T13:23:57.387 回答
0

使用 Input、AnyKey、L1 等待任意键被按下。L1 表示按下一个键后,不需要 [end] 键。您可以检查 AnyKey 的内容,但实际上并不需要。

于 2013-06-07T09:26:42.360 回答
0

也许已知键的列表可能有效?

keys = ``1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./
Loop Parse, keys
Run, D:\my\program\to\run\on\any\key.bat
return

这就是我想到的。

于 2013-06-07T09:32:55.607 回答
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
于 2014-04-29T05:54:14.287 回答