如何通过发送虚拟密钥VK_LAUNCH_MEDIA_SELECT来确定它将启动哪个播放器

时间:2012-05-02 05:43:44

标签: winapi vbscript media-player sendkeys keyboard-input

在Win2K(或更高版本)下,通过发送虚拟密钥VK_LAUNCH_MEDIA_SELECT,可以启动播放器。

如果安装了多个播放器软件,如何确定它将启动哪个?

示例VBS代码:

Wscript.CreateObject("Wscript.Shell").Sendkeys chr(&h88b5)

http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx

http://msdn.microsoft.com/zh-cn/library/dd375731

VK_LAUNCH_MEDIA_SELECT
0xB5
Select Media key

3 个答案:

答案 0 :(得分:1)

VK_LAUNCH_MEDIA_SELECT实际上已被系统收到并转换为WM_APPCOMMANDlParamAPPCOMMAND_LAUNCH_MEDIA_SELECT。因此从理论上讲,任何为此实现处理程序的程序都可以启动。 This page(虽然旧)列出了监听WM_APPCOMMAND的默认应用程序:

  • Internet Explorer
  • Windows帮助
  • DVD播放器
  • CD播放器
  • 媒体播放器
  • 音量控制系统托盘小程序

显然,其中只有少数几个适用于APPCOMMAND_LAUNCH_MEDIA_SELECT

但是,我不知道翻译机制是如何运作的。似乎并非每个应用程序都会收到翻译的WM_APPCOMMAND消息。在我的键盘上,我尝试按下发送VK_VOLUME_UP的按钮。音量按预期上升,因为它由音量控制系统托盘小程序处理。但是,我打开了notepad.exe的实例并使用Spy ++监视其消息。即使它在前台也没有收到任何消息。奇怪的是,只要VK_MEDIA_PLAY_PAUSE有焦点,只要按下播放/暂停按钮,就会通过WM_APPCOMMAND收到notepad.exe。我会用VK_LAUNCH_MEDIA_SELECT进行测试,但我实际上并不确定哪个按钮对应(或者我的键盘是否有)。

答案 1 :(得分:1)

谢谢Mike Kwan的回复。

通过测试很多设置与各种音频文件相关的程序。 最终确定,这将取决于 CDA(CD音频)文件与哪个程序相关

如果您将CDA(CD音频)文件的默认关联设置为Notepad或Paint或任何其他程序,它仍然可以发送相同的虚拟键以打开相应的程序。

答案 2 :(得分:1)

前台窗口可以响应WM_APPCOMMAND消息做任何事情,如果它不处理消息,那么shell钩子(HSHELL_APPCOMMAND)会处理它,如果没有钩子处理消息,那么Windows检查注册表中的AppKey密钥。 (您可以使用Process Monitor查找特定按键的编号)