2011-08-22 51 views
8

许多键盘具有常见的媒体功能,如下一首/上一首,播放/暂停和停止。他们是否在Windows中使用了一些现有的API,或者他们是否实现了特定于最流行媒体播放器(WMP,WinAmp,Spotify等)的功能?我拥有的具有此功能的所有键盘似乎都适用于所有内容,无论键盘与软件的年龄大小如何,所以我认为可能已经为此构建了一个API。用于常见媒体播放器功能的Windows API?

如果他们在Windows中使用已经存在的API,我可以在哪里找到关于它的信息?

只是为了澄清:我不是在寻找一种专门与Windows Media Player交互的方式。我想找到一个魔法按钮来触及所有(支持)媒体播放器 - 如果存在的话。

+0

我一直想知道它是怎么可能有通用遥控器对于Windows,但从未连接过点 - 感谢您提出这个问题。 –

回答

6

这只是一个虚拟键码 - 官方列表请参阅MSDN

,你可以找到例如VK_VOLUME_UPVK_MEDIA_PLAY_PAUSEVK_ZOOM

还有一些遥控转换为这些代码尽可能与现有软件兼容的..

编辑 - 按评论:

这些是在Windows ME(!)出来并且仍在使用的当天推出的 - 至少当我检查了Windows 2008 R2的注册表时!

基本的Windows转换某些VK *与该应用程序监听特定代码WM_APPCOMMAND消息...
如果密钥有事情做与启动应用程序做(即邮件,浏览器等),那么魔术通过Windows资源管理器发生,它从注册表Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ AppKey--无论是HKLM还是HKCU读取映射(通过关联或直接执行)。

与旧有的联系,但它似乎仍然有效的信息:

+0

...但使用这些键码的Windows中的底层功能不会暴露在任何地方? –

+0

您的意思是说Windows如何知道某人在推送'VK_LAUNCH_MAIL'时应启动哪个应用程序? – Yahia

+1

不一定如何知道,但无论它在下面调用什么函数/方法。我的意思是,因为Windows可以识别许多可以使用的不同应用程序,播放/暂停功能,它必须具有某种通用界面来查找,这可以通过Windows本身的特定功能来触发......? –

6

他们只是生成DefWindowProc()识别的虚拟键码。直接从WINUSER.H头文件复制:

#if(_WIN32_WINNT >= 0x0500) 
#define VK_BROWSER_BACK  0xA6 
#define VK_BROWSER_FORWARD  0xA7 
#define VK_BROWSER_REFRESH  0xA8 
#define VK_BROWSER_STOP  0xA9 
#define VK_BROWSER_SEARCH  0xAA 
#define VK_BROWSER_FAVORITES 0xAB 
#define VK_BROWSER_HOME  0xAC 

#define VK_VOLUME_MUTE   0xAD 
#define VK_VOLUME_DOWN   0xAE 
#define VK_VOLUME_UP   0xAF 
#define VK_MEDIA_NEXT_TRACK 0xB0 
#define VK_MEDIA_PREV_TRACK 0xB1 
#define VK_MEDIA_STOP   0xB2 
#define VK_MEDIA_PLAY_PAUSE 0xB3 
#define VK_LAUNCH_MAIL   0xB4 
#define VK_LAUNCH_MEDIA_SELECT 0xB5 
#define VK_LAUNCH_APP1   0xB6 
#define VK_LAUNCH_APP2   0xB7 

#endif /* _WIN32_WINNT >= 0x0500 */ 

由于所有窗口调用DefWindowProc函数(),你可以简单地使用SendInput或keybd_event发送的击键。