我可以将击键发送到特定的应用程序吗?

我可以将击键发送到特定的应用程序吗?

我有一个多媒体键盘,上面有播放/暂停、下一个、上一个等按钮,我用 Rhapsody 播放音乐。但是有一个问题,除非是活动窗口,否则程序无法识别(或操作系统无法传递)多媒体按键。

有没有办法通过第三方程序(Autohotkey 或类似程序)解决这个问题,并让其捕获击键并将其提供给特定的应用程序?

答案1

最简单的方法是将按键发送到非活动窗口自动热键是:(1)记住当前活动窗口,(2)激活目标窗口,(3)发送击键,(4)激活原始窗口。

以下脚本适用于狂想曲

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_Pauseet al 注册到键盘的媒体键,则必须手动检索扫描代码。说明可在我的回答中找到:https://superuser.com/a/371141/100787

答案2

将密钥发送到特定窗口的官方(也是最简单)方法是使用控制发送功能:

ControlSend,, P            , Raphsody

ControlSend,, {Media_Stop} , ahk_id %HWND%

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

etc.

答案3

我需要做类似的事情,所以出于好奇我尝试了两者:

#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

显而易见,第二种方法不仅不太复杂,而且速度也更快。

相关内容