Как определить, какого игрока он запустит, отправив виртуальный ключ VK_LAUNCH_MEDIA_SELECT

Под 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 ответа

Окно переднего плана может делать все, что захочет, в ответ на сообщение WM_APPCOMMAND, если оно не обрабатывает сообщение, то обработчики оболочки (HSHELL_APPCOMMAND) могут его обработать, если нет обработчиков сообщения, то Windows проверяет ключ AppKey в реестре. (Вы можете использовать Process Monitor, чтобы найти номер для конкретного нажатия клавиши)

VK_LAUNCH_MEDIA_SELECT фактически принимается системой и переводится в WM_APPCOMMAND с lParam как APPCOMMAND_LAUNCH_MEDIA_SELECT, Теоретически, любая программа, реализующая обработчик для этого, может быть запущена. На этой странице (хотя и старой) перечислены приложения по умолчанию, которые прослушивают WM_APPCOMMAND:

  • Internet Explorer
  • Справка Windows
  • ДВД плеер
  • 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, но я не совсем уверен, какой кнопке она соответствует (или есть ли на моей клавиатуре).

Спасибо за ответ Майка Квана.

Благодаря тестированию множества настроек программа связана с различными аудиофайлами. Окончательно, это будет зависеть от файлов CDA (CD Audio), связанных с какой программой.

Если для файлов CDA (CD Audio) по умолчанию установлено связывание "Блокнот" или "Paint" или любой другой программы, он все равно может отправить тот же виртуальный ключ, чтобы открыть соответствующую программу.

Другие вопросы по тегам