Я использую скрипт AutoHotKey для управления iTunes стандартными клавишами мультимедиа, и он отлично работает, за исключением одного твика, который я пытался добавить к нему. Я хочу, чтобы мультимедийная клавиша «Воспроизведение / Пауза» запустила iTunes, если он еще не открыт, а затем просто начала играть. Я даже добавил задержку, чтобы у нее было время открываться перед командой воспроизведения.
Это код, который я пробовал, но он просто запускает 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
}

РЕДАКТИРОВАТЬ: Рабочий код для 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 ответ1

1

Просто взглянув на код, я не вижу, в какое окно должен отправляться первый ControlSend . Назначьте WinTitle, т. ahk_class iTunes для третьего аргумента.

Это, или вместо оператора сна, попробуйте WinWaitActive (возможно, с последующим гораздо более коротким оператором Sleep если WinWaitActive не справится полностью).

WinWaitActive предположительно установил бы последнее найденное окно таким же образом, как это делает IfWInExist во втором блоке кода, и это единственная причина, по которой я могу думать, что это действительно работает. ControlSend должен отправлять в последнее найденное окно, так как ни один не указан явно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .