使用 AutoHotkey 在函数运行时阻止特定键

使用 AutoHotkey 在函数运行时阻止特定键

所以我用 AHK 编写了这个脚本,它可以工作,但我希望它还能做到,即当该功能运行时,它不会再次被触发。所以我想停用和F11F12,或者停用热键。

我无法使用 BlockInput 命令,因为 Run 命令会启动 macroRecorder 脚本,如果我禁用所有输入,这些脚本也无法工作(我测试过了)

我不熟悉 ahk,所以我被困在这里。任何帮助都将不胜感激。

#SingleInstance force

ShowEN:="TestCasino"
ShowEL:="TestGold"


; Set up the hotkeys

$F11::PlayShow(ShowEN)
$F12::PlayShow(ShowEL)
 

PlayShow(whichShow) {
    
    Run, %whichShow% [, C:\Users\dplyt\Desktop, ]

    return
}

    
Return

答案1

有两种方法可以做到这一点....

方法 1 是使用运行等待命令,而不是 Run,这将使函数在运行程序后不会立即退出(即 PlayShow() 将等到程序关闭后再返回)。只要 RunWait 行正在执行且函数尚未返回,触发它的热键就不会重新触发。

方法 2 是将方法 1 与热键命令可禁用/启用一个或两个热键。如果您只想禁用调用例程的热键,您可以使用A_ThisHotkey。如果您想禁用它们,您可以在通话之前和之后对它们进行硬编码以关闭/打开它们......

#SingleInstance force

ShowEN:="TestCasino"
ShowEL:="TestGold"


; Set up the hotkeys

$F11::PlayShow(ShowEN)
$F12::PlayShow(ShowEL)

PlayShow(whichShow) {
    
    Hotkey, F11,, Off
    Hotkey, F12,, Off
    
    RunWait, %whichShow% [, C:\Users\dplyt\Desktop, ]
    
    Hotkey, F11,, On
    Hotkey, F12,, On

    Return

}
    
Return  

相关内容