2011-08-22 9 views
8

Wiele klawiatur ma wspólne funkcje multimedialne, takie jak następny/poprzedni, odtwarzanie/pauza i zatrzymanie. Czy używają niektórych istniejących API w Windows, czy też implementują funkcje specyficzne dla najpopularniejszych odtwarzaczy multimedialnych (WMP, WinAmp, Spotify ...)? Wszystkie posiadane przeze mnie klawiatury, które mają tę funkcjonalność, zdawały się działać ze wszystkim, bez względu na wiek klawiatury i oprogramowania, więc pomyślałem, że może istnieć już wbudowany interfejs API.Windows API dla popularnych funkcji odtwarzacza multimedialnego?

Jeśli używają już istniejącego interfejsu API w systemie Windows, gdzie mogę znaleźć informacje na jego temat?

Tylko wyjaśnić: Nie szukam sposobu na interakcję z odtwarzaczem Windows Media. Chcę znaleźć ten magiczny przycisk, aby trafić do wszystkich (obsługiwanych) odtwarzaczy multimedialnych - jeśli taki istnieje.

+0

Zawsze zastanawiałem się, jak to było możliwe, aby mieć ogólne piloty w systemie Windows, ale nigdy nie łączyłem kropek - dziękuję za zadanie tego pytania. –

Odpowiedz

6

to tylko wirtualny kod klucza - oficjalna lista znajduje się pod adresem MSDN.

tam znaleźć na przykład VK_VOLUME_UPVK_MEDIA_PLAY_PAUSEVK_ZOOM

nawet niektóre zdalne przekłada się na tych kodów być możliwie jak najbardziej zgodny z istniejącym oprogramowaniem ..

EDIT - zgodnie z komentarzem:

Zostały one wprowadzone z powrotem w dniu, w którym Windows ME (!) Wyszedł i są nadal w użyciu - przynajmniej gdy sprawdziłem rejestr systemu Windows 2008 R2!

Zasadniczo Okna tłumaczy pewną VK * do wiadomości WM_APPCOMMAND z pewnych kodów, które aplikacje słuchają ...
Jeśli klucz ma coś wspólnego z uruchomieniem aplikacji do zrobienia (czyli poczta, przeglądarka itd), to magia dzieje się przez Eksploratora Windows, który odczytuje mapowanie (przez skojarzenie lub bezpośrednie wykonanie) z rejestru pod numerem Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ AppKey - albo HKLM, albo HKCU.

Niektóre związki z stary, ale jak się wydaje nadal ważne informacje:

+0

... ale podstawowe funkcje w systemie Windows, które używają tych kodów kluczy, nie są nigdzie widoczne? –

+0

masz na myśli, jak Windows wie na przykład, która aplikacja uruchamia się, gdy ktoś mówi "VK_LAUNCH_MAIL"? – Yahia

+1

Niekoniecznie, jak to wie, ale niezależnie od funkcji/metody, którą wywołuje poniżej. Mam na myśli, ponieważ system Windows rozpoznaje tak wiele różnych aplikacji, które mogą używać np. funkcja play/pause, musi mieć jakiś typowy interfejs do wyszukania, który może zostać wywołany przez określoną funkcję w samym systemie Windows ...? –

6

Po prostu generują wirtualny kod klucza rozpoznawany przez DefWindowProc(). Skopiowane prosto z pliku nagłówka 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 */ 

Ponieważ wszystkie okna zadzwonić DefWindowProc(), można po prostu użyć SendInput lub keybd_event aby wysłać naciśnięcie klawisza.

Powiązane problemy