0

在 Win2K(或更高版本)下,通过发送 Virtual-Key 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
4

3 回答 3

1

前台窗口可以为响应WM_APPCOMMAND消息做任何它想做的事情,如果它不处理该消息,则外壳挂钩 (HSHELL_APPCOMMAND) 开始处理它,如果没有挂钩处理该消息,则 Windows 检查注册表中的AppKey键。(您可以使用Process Monitor查找特定按键的编号)

于 2012-05-03T22:11:34.890 回答
1

VK_LAUNCH_MEDIA_SELECT实际上是由系统接收并翻译成一个WM_APPCOMMANDwith lParamas APPCOMMAND_LAUNCH_MEDIA_SELECT。所以理论上,任何实现这个处理程序的程序都可以启动。此页面(尽管很旧)列出了侦听的默认应用程序WM_APPCOMMAND

  • IE浏览器
  • 帮助
  • DVD播放机
  • 激光唱机
  • 媒体播放器
  • 音量控制系统托盘小程序

显然,其中只有少数真正适用于APPCOMMAND_LAUNCH_MEDIA_SELECT.

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

于 2012-05-02T16:06:17.373 回答
1

谢谢,Mike Kwan 的回复。

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

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

于 2012-05-02T17:25:21.557 回答