2011-08-22 21 views
8

Un sacco di tastiere hanno funzioni multimediali comuni come successivo/precedente, riproduzione/pausa e interruzione. Usano alcune API esistenti in Windows o implementano funzioni specifiche per i lettori multimediali più popolari (WMP, WinAmp, Spotify ...)? Tutte le tastiere che ho posseduto che hanno questa funzionalità sembrano funzionare con tutto, indipendentemente dall'età della tastiera rispetto al software, quindi ho pensato che ci potesse essere un'API già costruita per questo.per le funzioni comuni del lettore multimediale?

Se utilizzano un'API già esistente in Windows, dove posso trovare informazioni a riguardo?

Giusto per chiarire: non sto cercando un modo per interagire specificamente con il lettore Windows Media. Voglio trovare un pulsante magico da colpire per raggiungere tutti i lettori multimediali (supportati) - se ne esiste uno.

+0

Mi sono sempre chiesto come fosse possibile avere telecomandi generici per Windows, ma mai collegato i punti - grazie per aver fatto questa domanda. –

risposta

6

questo è solo un codice tasto virtuale - per un elenco ufficiale vedere MSDN.

Vi si trovano per esempio VK_VOLUME_UPVK_MEDIA_PLAY_PAUSEVK_ZOOM

Anche alcuni telecomandi tradurre a questi codici di essere il più possibile compatibile con il software esistente ..

EDIT - come da commento:

Questi sono stati introdotti nel giorno in cui Windows ME (!) È uscito e sono ancora in uso, almeno quando ho controllato il registro di Windows 2008 R2!

Fondamentalmente Windows converte certo VK * in messaggi WM_APPCOMMAND con alcuni codici che le applicazioni ascoltano ...
Se la chiave ha qualcosa a che fare con il lancio di un app per fare (ad esempio Mail, browser ecc) poi la magia avviene tramite Windows Explorer che legge il mapping (per associazione o exec diretta) dal registro a Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ AppKey - HKLM o HKCU.

Alcuni link con il vecchio, ma a quanto pare ancora informazioni valide:

+0

... ma la funzionalità sottostante in Windows che utilizza questi codici chiave non è esposta da nessuna parte? –

+0

intendi come Windows conosce ad esempio quale applicazione avviare quando qualcuno preme 'VK_LAUNCH_MAIL'? – Yahia

+1

Non necessariamente come lo sa, ma qualunque funzione/metodo chiama in basso. Voglio dire, dal momento che Windows riconosce così tante app diverse che possono utilizzare, ad es. funzionalità di riproduzione/pausa, deve avere una sorta di interfaccia comune da cercare, che può essere attivata tramite una funzione specifica in Windows stesso ...? –

6

Semplicemente generano un codice di chiave virtuale riconosciuto da DefWindowProc(). Copiati direttamente dal file di intestazione 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 */ 

Da tutte le finestre chiamano DefWindowProc(), si può semplicemente utilizzare SendInput o keybd_event per inviare la sequenza di tasti.

Problemi correlati