AutoHotKey - 複数のコマンドが実行されていない


0

私はAutoHotKeyスクリプトを使ってiTunesを標準のメディアキーで制御していますが、それを追加しようとした1つの調整を除いて、うまく機能しています。まだ開いていない場合は、Play / PauseメディアキーでLaunch iTunesを起動してから再生を開始します。遅延を追加したので、playコマンドの前に開く時間があるでしょう。
これは私が試したコードですが、iTunesを起動するだけなので、Play / Pauseキーをもう一度押す必要があります。

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 3番目の引数です。

それ、またはsleep文の代わりに、試してみてください WinWaitActive (おそらくはるかに短いが続いた Sleep if文 WinWaitActive トリックを完全にはやらない)。

A WinWaitActive ステートメントはおそらく最後に見つかったウィンドウを同じように設定します IfWInExist 2番目のコードブロックでは、これが実際に機能することを私が考えることができる唯一の理由です。何も明示的に指定されていないため、ControlSendは最後に見つかったウィンドウに送信している必要があります。


はっ! ahkフォーラムの誰かが提案した WinWait そして、私はそれを挿入することによってそれを動かしました WinWait, ahk_class iTunes, , 2 の前に Sleep ステートメント。この文を追加すると、 ahk_parent に送る?
Chris M
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.