Estoy usando un script AutoHotKey para controlar iTunes con claves multimedia estándar y funciona muy bien, excepto por un ajuste que intenté agregarle. Quiero que la tecla multimedia Reproducir/Pausar inicie iTunes si aún no está abierta y luego comience a reproducir. Incluso agregué un retraso para que tuviera tiempo de abrirse antes del comando de reproducción.
Este es el código que probé pero simplemente inicia iTunes y tengo que presionar la tecla Reproducir/Pausa por segunda vez para comenzar a reproducir:
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
}
EDITAR: Código de trabajo porJJohnston2Responda abajo:
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
}
Respuesta1
Con solo echar un vistazo al código, no veo a qué ventana ControlSend
se supone que debe enviar el primero. Designe un WinTitle, es decir, ahk_class iTunes
para el tercer argumento.
Eso, o en lugar de una declaración de sueño, inténtelo WinWaitActive
(posiblemente seguido de una Sleep
declaración mucho más corta si WinWaitActive
no funciona por completo).
Una WinWaitActive
declaración presumiblemente establecería la última ventana encontrada de la misma manera IfWInExist
que en el segundo bloque de código, que es la única razón por la que puedo pensar que esto realmente funciona. ControlSend debe enviarse a la última ventana encontrada ya que no se especifica ninguna explícitamente.