c # - Windows API til almindelige medieafspillerfunktioner?

Indlæg af Hanne Mølgaard Plasc

Problem



Masser af tastaturer har fælles mediefunktioner som næste/forrige, afspil/pause og stop. Bruger de nogle eksisterende API'er i Windows, eller implementerer de funktioner, der er specifikke for de mest populære medieafspillere (WMP, WinAmp, Spotify ...)? Alle tastaturer, jeg har ejet, der har denne funktionalitet, har lige syntes at virke med alt, uanset tastaturets alder versus softwaren, så jeg troede, at der måske var en allerede bygget API til dette.


Hvis de bruger en allerede eksisterende API i Windows, hvor kan jeg finde oplysninger om det?


Bare for at afklare: Jeg søger ikke en måde at interagere med Windows Media Player specifikt. Jeg vil gerne finde den ene magiske knap for at nå alle (understøttede) medieafspillere - hvis en sådan findes.

Bedste reference


dette er bare en virtuel nøglekode - for en officiel liste se MSDN. [6]


Der findes f.eks. VK\_VOLUME\_UP VK\_MEDIA\_PLAY\_PAUSE VK\_ZOOM


Selv nogle fjernbetegnelser oversætter til disse koder for at være så kompatible som muligt med eksisterende software.


EDIT - som pr. kommentar:



Disse blev introduceret tilbage på den dag da Windows ME (!) Kom ud og stadig er i brug - i hvert fald når jeg kontrollerede registreringsdatabasen for min Windows 2008 R2!


I princippet oversætter Windows visse VK * til WM\_APPCOMMAND meddelelser med bestemte koder, som applikationerne lytter til ...

Hvis nøglen har noget at gøre med at lancere en app, der skal gøres (dvs. Mail, Browser osv.), Sker magien via Windows Stifinder, som læser kortlægningen (enten ved foreningen eller direkte exec) fra registreringsdatabasen på Software Microsoft Windows CurrentVersion Explorer AppKey - enten HKLM eller HKCU.


Nogle links med gamle, men som det synes stadig gyldig information:



  • Udvidede tastaturer og Windows

  • Arkiv: HID Audio Controls og Windows

  • Arkiv: Nøglesupport, Keyboard Scan Codes og Windows


Andre referencer 1


De genererer simpelthen en virtuel nøglekode, som DefWindowProc () genkender. Kopieret direkte fra WinUser.h headerfilen: [7] [8] [9]


#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 */


Da alle vinduer kalder DefWindowProc (), kan du simpelthen bruge SendInput eller keybd\_event til at sende tastetrykket.