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


4

我有一个带有播放/暂停,下一个,上一个等按钮的多媒体键盘,并为我的音乐使用Rhapsody。但是,存在一个问题,即程序无法识别(或OS不会通过)多媒体击键,除非它是活动窗口。

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


哼。在Windows上我不确定,因为我的主计算机是mac。但我认为解决方案与mac和windows类似。无论如何,第三方应用程序听起来像一个非常好的主意,但mac也有系统首选项>键盘>服务中的内置服务菜单,以便您可以指定热键或键,使用它们的应用程序,以及它们将做。
FALL3N

2
用户提到了Auto Hotkey,因此他在Windows上。
Daniel Beck

1
@Nick,我用AutoHotkey解决了类似的问题:superuser.com/questions/368633
....

@iglvzx,这是一个很好的答案。您应该在此处发布链接作为答案。
Dave Neeley

@Nick,明天我会开枪。使用AutoHotkey有几种方法可以做到这一点。
iglvzx

Answers:


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

很明显,第二个不仅不那么复杂,而且速度也快得多。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.