AutoHotKey - Múltiplos comandos não executados

0

Estou usando um script AutoHotKey para controlar o iTunes com as chaves de mídia padrão e funciona bem, exceto por um ajuste que tentei adicionar a ele. Eu quero que a tecla de mídia Reproduzir / Pausar inicie o iTunes se ele 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 eu tentei, mas ele apenas lança o iTunes e eu tenho que pressionar a tecla Play / Pause pela 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 por JJohnston2 responda 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
}
    
por Chris M 31.08.2017 / 00:19

1 resposta

1

Apenas olhando 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 declaração de suspensão, tente WinWaitActive (possivelmente seguido por uma instrução Sleep muito mais curta se WinWaitActive não resolver totalmente o truque).

Uma instrução WinWaitActive presumivelmente configuraria a última janela encontrada da mesma maneira que IfWInExist no segundo bloco de código, que é a única razão pela qual posso pensar que isso realmente funciona. O ControlSend deve estar enviando para a última janela encontrada, pois nenhuma é especificada explicitamente.

    
por 01.09.2017 / 08:18