Posso enviar pressionamentos de tecla para um aplicativo específico?

4

Eu tenho um teclado multimídia com os botões Play / Pause, Next, Previous, etc., e uso o Rhapsody para minha música. Há um problema, no entanto, em que o programa não reconhecerá (ou o SO não passará) as teclas digitadas, a menos que seja a janela ativa.

Existe uma maneira de contornar isso com um programa de terceiros (Autohotkey ou similar) e capturá-los e alimentá-los para aplicativos específicos?

    
por Nick T 15.01.2012 / 22:55

3 respostas

1

O método mais fácil de enviar pressionamentos de tecla para uma janela inativa com AutoHotkey é: (1) lembrar da janela ativa atual, (2) ativar a janela de destino, (3) enviar pressionamentos de tecla e (4) ativar a janela original.

Este script a seguir funciona com o Rhapsody :

Media_Play_Pause::
WinGet, original, ID, A
WinActivate, Rhapsody
Send ^p
WinActivate, ahk_id %original%
Exit

Media_Stop::
WinGet, original, ID, A
WinActivate, Rhapsody
Send ^s
WinActivate, ahk_id %original%
Exit

Media_Prev::
WinGet, original, ID, A
WinActivate, Rhapsody
Send ^b
WinActivate, ahk_id %original%
Exit

Media_Next::
WinGet, original, ID, A
WinActivate, Rhapsody
Send ^f
WinActivate, ahk_id %original%
Exit

Observação: Se o AutoHotkey não registrar Media_Play_Pause et al nas teclas de mídia do seu teclado, você precisará recuperar manualmente os códigos de verificação. Instruções podem ser encontradas na minha resposta aqui: link

    
por 18.01.2012 / 22:06
1

A maneira oficial (e mais fácil) de enviar chaves para uma janela específica é usar o ControlSend função:

ControlSend,, P            , Raphsody

ControlSend,, {Media_Stop} , ahk_id %HWND%

ControlSend,, ^{Space}     , ahk_pid %RAHP_PID%

etc.
    
por 06.02.2013 / 21:27
0

Eu precisava de algo semelhante para fazer isso por curiosidade, eu tentei os dois:

#Media_Play_Pause::
    WinGet, original, ID, A
    WinActivate, MyWindowTitle name - Rapsody
    Send ^p
    WinActivate, ahk_id %original%
return

e

Media_Play_Pause::
    ControlSend ahk_parent, ^p, MyWindowTitle name - Rapsody
return
É óbvio que o segundo não é apenas menos complexo, mas também muito mais rápido.

    
por 26.04.2013 / 12:50