C# 常用媒体播放器功能的Windows API?

C# 常用媒体播放器功能的Windows API?,c#,windows,C#,Windows,许多键盘都有常用的媒体功能,如下一个/上一个、播放/暂停和停止。他们是在Windows中使用一些现有的API,还是实现了最流行的媒体播放器(WMP、WinAmp、Spotify…)特有的功能?我拥有的所有具有此功能的键盘似乎都能与任何东西一起工作,而不管键盘和软件的年龄,所以我认为可能已经有了一个用于此功能的API 如果他们在Windows中使用已经存在的API,我在哪里可以找到有关它的信息 我只是想澄清一下:我并不是专门寻找一种与Windows Media player交互的方式。我想找到一个

许多键盘都有常用的媒体功能,如下一个/上一个、播放/暂停和停止。他们是在Windows中使用一些现有的API,还是实现了最流行的媒体播放器(WMP、WinAmp、Spotify…)特有的功能?我拥有的所有具有此功能的键盘似乎都能与任何东西一起工作,而不管键盘和软件的年龄,所以我认为可能已经有了一个用于此功能的API

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


我只是想澄清一下:我并不是专门寻找一种与Windows Media player交互的方式。我想找到一个神奇的按钮,点击它可以到达所有(受支持的)媒体播放器——如果存在这样的播放器的话。

它们只需生成一个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_事件发送击键。

这只是一个虚拟键代码-有关正式列表,请参阅

例如,您可以在这里找到
VK\u音量向上
VK\u媒体播放暂停
VK\u缩放

甚至有些遥控器也转换成这些代码,以便尽可能与现有软件兼容

编辑-根据评论:

这些都是在Windows ME(!)问世并仍在使用的那一天引入的,至少在我检查Windows 2008 R2的注册表时是这样

基本上,Windows将某些VK*转换为WM_APPCOMMAND消息,其中包含应用程序侦听的特定代码…
如果该键与启动应用程序有关(如邮件、浏览器等),那么神奇的事情就会发生在Windows资源管理器上,它从注册表中读取映射(通过关联或直接执行),地址为
Software\Microsoft\Windows\CurrentVersion\Explorer\AppKey
-HKLM或HKCU

与旧但似乎仍然有效的信息的一些链接:


不一定是它如何知道的,而是它在下面调用的任何函数/方法。我的意思是,由于Windows识别出许多不同的应用程序可以使用,例如播放/暂停功能,它必须有某种通用的界面,可以通过Windows本身的特定功能触发…?@Arve Systad,如果你问的是用于播放媒体文件的Windows API,这是一个完全不同的问题。API不直接响应键,应用程序响应键并将命令转发给API。@Mark Ransom:啊,这很有意义。应用程序监听按键。我的想法完全相反。这就澄清了一切。如果这是一篇单独的帖子,我会接受你的回答:-)因为你们似乎都是对的-请看我的编辑,了解魔法是如何发生的:-)谢谢你的最新编辑。我假设应用程序直接响应按键,但这是不正确的;您的链接说明Windows会自动将密钥转换为WM_APPCOMMAND消息。我希望我能再给一个+1。我一直想知道为什么有通用的Windows遥控器是可能的,但从来没有连接点-谢谢你问这个问题。