我正在使用 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 必须发送到最后找到的窗口。