Ich verwende ein AutoHotKey-Skript, um iTunes mit Standard-Medientasten zu steuern, und es funktioniert großartig, bis auf eine kleine Änderung, die ich versucht habe, vorzunehmen. Ich möchte, dass die Medientaste „Wiedergabe/Pause“ iTunes startet, wenn es noch nicht geöffnet ist, und dann einfach mit der Wiedergabe beginnt. Ich habe sogar eine Verzögerung hinzugefügt, damit es Zeit hat, sich vor dem Wiedergabebefehl zu öffnen.
Dies ist der Code, den ich ausprobiert habe, aber er startet nur iTunes und ich muss die Taste „Wiedergabe/Pause“ ein zweites Mal drücken, um mit der Wiedergabe zu beginnen:
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
}
EDIT: Funktionierender Code proJJohnston2Antwort unten:
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
}
Antwort1
Wenn ich mir den Code nur kurz ansehe, sehe ich nicht, ControlSend
an welches Fenster das erste senden soll. Weisen Sie ahk_class iTunes
für das dritte Argument z. B. einen Fenstertitel zu.
Oder versuchen Sie es statt einer Sleep-Anweisung mit WinWaitActive
(ggf. gefolgt von einer viel kürzeren Sleep
Anweisung, wenn WinWaitActive
das nicht ganz funktioniert).
Eine WinWaitActive
Anweisung würde vermutlich das zuletzt gefundene Fenster auf die gleiche Weise festlegen wie IfWInExist
im zweiten Codeblock. Das ist meiner Meinung nach der einzige Grund, warum dies tatsächlich funktioniert. ControlSend muss an das zuletzt gefundene Fenster senden, da keines explizit angegeben ist.