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
}

編輯:每個工作代碼約翰斯頓2回答如下:

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相同的方式設定最後找到的窗口,這是我能想到這實際上有效的唯一原因。 IfWInExistControlSend 必須傳送到最後找到的窗口,因為沒有明確指定。

相關內容