用于常见媒体播放器功能的Windows API?

时间:2011-08-22 19:37:51

标签: c# windows

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

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

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

2 个答案:

答案 0 :(得分: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发送击键。

答案 1 :(得分:6)

这只是一个虚拟密钥代码 - 对于正式列表,请参阅MSDN

您可以找到例如VK_VOLUME_UP VK_MEDIA_PLAY_PAUSE VK_ZOOM

即使是一些遥控器也会将这些代码转换为与现有软件尽可能兼容..

编辑 - 根据评论:

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

Windows基本上将某些VK *转换为WM_APPCOMMAND消息,其中包含应用程序监听的某些代码...
如果密钥与启动应用程序(即邮件,浏览器等)有关,则魔术通过Windows资源管理器进行,该资源管理器从Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ AppKey的注册表中读取映射(通过关联或直接执行) - HKLM或HKCU。

有些旧的链接,但似乎仍然是有效的信息: