所以我用 AHK 编写了这个脚本,它可以工作,但我希望它还能做到,即当该功能运行时,它不会再次被触发。所以我想停用和F11键F12,或者停用热键。
我无法使用 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