AutoHotKey - несколько команд не выполняются
Я использую скрипт 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 ответ
Просто взглянув на код, я не вижу, какое окно первое ControlSend
должен отправлять на. Обозначить WinTitle, т.е. ahk_class iTunes
для третьего аргумента.
Это, или вместо заявления сна, попробуйте WinWaitActive
(возможно, с последующим гораздо более коротким Sleep
заявление, если WinWaitActive
не полностью делает свое дело).
WinWaitActive
оператор предположительно установит последнее найденное окно таким же образом IfWInExist
во втором блоке кода, и это единственная причина, по которой я могу думать, что это действительно работает. ControlSend должен отправлять последнее найденное окно, так как ни один не указан явно.