AutoHotKey-多个命令未执行

AutoHotKey-多个命令未执行

我正在使用 AutoHotKey 脚本通过标准媒体键控制 iTunes,除了我尝试添加的一个调整外,它运行良好。如果 iTunes 尚未打开,我希望播放/暂停媒体键启动它,然后开始播放。我甚至添加了延迟,以便它有时间在播放命令之前打开。
这是我尝试过的代码,但它只是启动 iTunes,我必须再次按下播放/暂停键才能开始播放:

Media_Play_Pause::
IfWinNotExist, ahk_class iTunes
{
Run %ProgramFiles%\iTunes\iTunes.exe
Sleep, 4000
ControlSend, ahk_parent, {SPACE}  ; play/pause toggle
return
}

IfWinExist, ahk_class iTunes
{
ControlSend, ahk_parent, {SPACE}  ; play/pause toggle
return
}

编辑:工作代码如下JJohnston2答案如下:

Media_Play_Pause::
IfWinNotExist, ahk_class iTunes
{
Run %ProgramFiles%\iTunes\iTunes.exe
WinWaitActive, ahk_class iTunes, ,2
Sleep, 2000
ControlSend, ahk_parent, {SPACE}  ; play/pause toggle
return
}

IfWinExist, ahk_class iTunes
{
ControlSend, ahk_parent, {SPACE}  ; play/pause toggle
return
}

答案1

只看了一下代码,我看不出第一个ControlSend应该发送到哪个窗口。指定一个 WinTitle,即ahk_class iTunes第三个参数。

或者,不要使用 sleep 语句,而是尝试(如果没有完全解决问题,则 WinWaitActive可能后面跟着一个更短的Sleep语句)。WinWaitActive

语句WinWaitActive可能会像IfWInExist在第二个代码块中一样设置最后找到的窗口,这是我能想到的这实际上有效的唯一原因。由于没有明确指定,因此 ControlSend 必须发送到最后找到的窗口。

相关内容