【问题标题】:AutoHotKey run program on any keyAutoHotKey 在任意键上运行程序
【发布时间】:2013-06-07 08:49:00
【问题描述】:

我想在使用 AutoHotKey 按下任意键时运行一个程序

类似:

AnyKey::Run, D:\my\program\to\run\on\any\key.bat

编辑2: 此代码运行良好:

 #InstallKeybdHook

SetTimer, AnyKeyPressed, 100

AnyKeyPressed:
    if( A_TimeIdlePhysical < 100 ){
        Run, D:\my\program\to\run\on\any\key.bat
}

^!p::pause

【问题讨论】:

  • 出于好奇:你想用这样的功能实现什么?
  • 我想在离开电脑时启动脚本,所以如果有人使用它,我的网络摄像头会拍照

标签: batch-file keyboard-shortcuts autohotkey


【解决方案1】:

一个简单的解决方案:

#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 的行为,使其仅查找键盘事件。

【讨论】:

  • 所以如果我用Run, D:\my\program\to\run\on\any\key.bat 替换return 1,它会在所有键盘输出上运行吗?另外,如果我不输入#InstallKeybdHook,它也可以与鼠标一起使用吗?
  • 是的,当一个按钮被按下时,它会连续运行你的程序(每秒很多次)。我怀疑你想要那个。您可能希望它只运行一次。所以改变你的代码,它会这样做。删除 #InstallKeybdHook 会将 A_TimeIdlePhysical 返回到其原始功能。 autohotkey.com/docs/Variables.htm
  • 我将您的代码完全复制粘贴到我的 ahk 脚本中,但我将 return 1 替换为 MsgBox test 并且无论我按什么键它都不起作用
  • @pocpoc47 代码正确。你调用函数了吗?复制粘贴代码不会神奇地使它工作。
  • 我应该怎么称呼它?我试着把AnyKeyPressed()放在}之后,但它也不起作用查看我的编辑
【解决方案2】:

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

#InstallKeybdHook
SetTimer, CheckActivity, 100
Exit

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

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

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

【讨论】:

  • 谢谢你的诀窍。别担心它在我的个人电脑上更像是一个恶作剧:)
  • 两个答案都解决了我的问题,所以我不知道选择哪一个:s
【解决方案3】:

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

【讨论】:

  • 看起来像我需要的,但我并没有真正理解语法。我如何使用它来运行我的程序?对不起,如果这是一个愚蠢的问题,我是 Ahk 的新手
  • 这是一个不错的 hack,但不幸的是它不适用于不产生任何文本输出的键。 fanuch 的回答也是如此。
【解决方案4】:

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

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

这就是我想到的。

【讨论】:

    【解决方案5】:
    #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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-04
      • 2015-11-17
      • 2020-07-08
      • 2021-12-20
      • 2022-08-05
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多