4

У меня есть мультимедийная клавиатура с кнопками Play/Pause, Next, Previous и т.д., И я использую Rhapsody для своей музыки. Однако существует проблема, когда программа не распознает (или ОС не пройдет) нажатия клавиш мультимедиа, если только это не активное окно.

Есть ли способ обойти это с помощью сторонней программы (Autohotkey или подобной), и она может захватывать нажатия клавиш и передавать их в определенные приложения?

3 ответа3

1

Самый простой способ отправить нажатия клавиш в неактивное окно с помощью AutoHotkey - это: (1) запомнить текущее активное окно, (2) активировать целевое окно, (3) отправить нажатия клавиш и (4) активировать исходное окно.

Этот следующий скрипт работает с 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

Примечание. Если AutoHotkey не регистрирует Media_Play_Pause и др. На клавиши мультимедиа на клавиатуре, вам придется вручную получать коды сканирования. Инструкции можно найти на мой ответ здесь: https://superuser.com/a/371141/100787

1

Официальный (и самый простой) способ отправить ключи в определенное окно - использовать функцию ControlSend :

ControlSend,, P            , Raphsody

ControlSend,, {Media_Stop} , ahk_id %HWND%

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

etc.
0

Мне нужно было сделать то же самое из любопытства, я попробовал оба:

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

а также

Media_Play_Pause::
    ControlSend ahk_parent, ^p, MyWindowTitle name - Rapsody
return

Вероятно, очевидно, что второй не только менее сложен, но и намного быстрее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .