Windows API для общих функций медиаплеера? - PullRequest
8 голосов
/ 22 августа 2011

Множество клавиатур имеют общие мультимедийные функции, такие как следующий / предыдущий, воспроизведение / пауза и остановка. Используют ли они какой-либо существующий API в Windows или реализуют функции, характерные для самых популярных медиаплееров (WMP, WinAmp, Spotify ...)? Все клавиатуры, которыми я владею и обладающие этой функциональностью, просто работают со всеми, независимо от возраста клавиатуры и программного обеспечения, поэтому я подумал, что для этого может быть уже создан API.

Если они используют уже существующий API в Windows, где я могу найти информацию об этом?

Просто чтобы уточнить: я не ищу способ взаимодействия с проигрывателем Windows Media специально. Я хочу найти одну волшебную кнопку, чтобы нажать на все (поддерживаемые) медиаплееры - если таковая существует.

Ответы [ 2 ]

6 голосов
/ 22 августа 2011

это просто код виртуального ключа - официальный список см. MSDN .

Там вы найдете, например, VK_VOLUME_UP VK_MEDIA_PLAY_PAUSE VK_ZOOM

Даже некоторые Remotes переводят эти коды, чтобы быть максимально совместимыми с существующим программным обеспечением ..

EDIT - согласно комментарию:

Они были введены еще в тот день, когда Windows ME (!) Вышла и все еще используется - по крайней мере, когда я проверил реестр моего Windows 2008 R2!

По сути, Windows переводит определенныеВК * в сообщения WM_APPCOMMAND с определенными кодами, которые приложения слушают ...Если ключ имеет какое-то отношение к запуску приложения (например, Mail, Browser и т. Д.), Тогда волшебство происходит через проводник Windows, который считывает сопоставление (либо по ассоциации, либо по прямому исполнению) из реестра в Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ AppKey - либо HKLMили HKCU.

Некоторые ссылки со старой, но, как кажется, действительной информацией:

6 голосов
/ 22 августа 2011

Они просто генерируют виртуальный код ключа, который распознает 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_event для отправки нажатия клавиши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...