Estou usando um script AutoHotKey para controlar o iTunes com teclas de mídia padrão e está funcionando muito bem, exceto por um ajuste que tentei adicionar a ele. Quero que a tecla de mídia Reproduzir/Pausar inicie o iTunes, se ainda não estiver aberto, e comece a reproduzir. Eu até adicionei um atraso para que ele tivesse tempo de abrir antes do comando play.
Este é o código que tentei, mas ele apenas inicia o iTunes e preciso pressionar a tecla Reproduzir/Pausar uma segunda vez para começar a jogar:
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: Código de trabalho porJJohnston2responda abaixo:
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
}
Responder1
Apenas olhando para o código, não vejo para qual janela o primeiro ControlSend
deveria estar enviando. Designe um WinTitle, ou seja, ahk_class iTunes
para o terceiro argumento.
Isso, ou em vez de uma instrução sleep, tente WinWaitActive
(possivelmente seguido por uma Sleep
instrução muito mais curta, se WinWaitActive
não funcionar totalmente).
Presumivelmente, uma WinWaitActive
instrução definiria a última janela encontrada da mesma forma IfWInExist
que no segundo bloco de código, que é a única razão pela qual consigo pensar que isso realmente funciona. ControlSend deve ser enviado para a última janela encontrada, pois nenhuma foi especificada explicitamente.