Как определить, какого игрока он запустит, отправив виртуальный ключ 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" или любой другой программы, он все равно может отправить тот же виртуальный ключ, чтобы открыть соответствующую программу.