2011-08-22 20 views
8

Birçok klavyede, sıradaki/önceki, oynat/duraklat ve durdur gibi yaygın medya işlevleri vardır. Windows'da mevcut bazı API'ları kullanıyorlar mı yoksa en popüler medya oynatıcılarına (WMP, WinAmp, Spotify ...) özgü işlevleri mi uyguluyorlar? Bu işleve sahip olan tüm klavyeler, klavye ve yazılımın yaşına bakılmaksızın, her şeyle çalışmış gibi görünüyordu, bu yüzden bunun için önceden oluşturulmuş bir API olabileceğini düşündüm.Windows API?

Windows'ta zaten var olan bir API kullanıyorlarsa, bu konu hakkında bilgi nereden bulabilirim?

Netleştirmek gerekirse: Özellikle Windows Media player ile etkileşimde bulunmanın bir yolunu aramıyorum. Tüm (desteklenen) medya oynatıcılarına ulaşmak için tek bir sihirli düğmenin bulunması gerekiyor - böyle biri varsa.

+0

Hep jenerik uzaktan kumandaları olması mümkün merak ettik Windows için, ama asla noktaları bağlı - bu soruyu sorduğunuz için teşekkürler. –

cevap

6

Bu sadece bir sanal anahtar koddur - bir resmi listeleme için bkz. MSDN. Orada

sen .. varolan yazılımı ile mümkün olduğunca uyumlu olacak şekilde bu kodlara çevirmek örneğin

DÜZENLEMEYİ VK_VOLUME_UPVK_MEDIA_PLAY_PAUSEVK_ZOOM

Hatta bazı Remotes bulmak - comment göre:

Bunlar, Windows ME (!) 'Nin çıktığı ve hala kullanımda olduğu günlerde tanıtıldı - en azından Windows 2008 R2'nin kayıt defterini kontrol ettiğimde!

Temelde, Windows uygulamaları dinlemek belli kodları ile WM_APPCOMMAND mesajlarına ...
anahtar (yani tesisi vb Tarayıcı) yapmak için bir uygulama başlatarak bir ilgisi varsa o zaman büyü içine belli VK * çevirir eşleştirmeyi (ilişkilendirme veya doğrudan yürütme yoluyla) Software\ Microsoft\ Windows\ CurrentVersion\ Explorer\ AppKey kayıt defterinden (HKLM veya HKCU) okuyan Windows Gezgini aracılığıyla gerçekleşir.

Bazı eski ile bağlantıları ama hala geçerli bilgileri gibi görünüyor:

+0

... ama Windows'da bu anahtar kodları kullanan temel işlevi herhangi bir yere maruz kalmıyor mu? –

+0

Pencerelerin nasıl olduğunu bildiğinizi kastediyorsunuz. Örneğin, birisi VK_LAUNCH_MAIL tuşuna basıldığında hangi uygulamanın başlayacağını? – Yahia

+1

Mutlaka bilmediği gibi, ama aşağıda hangi işlev/yöntemle çağırır. Yani, Windows ör. Oynat/duraklat işlevselliği, Windows'un kendine özgü bir işleviyle tetiklenebilecek bir çeşit ortak arabirime sahip olması gerekir ...? –

6

Sadece DefWindowProc() tarafından tanınan bir sanal anahtar kodu oluştururlar. Düz winuser.h başlık dosyasından Kopyalanan: Tüm pencereler DefWindowProc() diyoruz

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

yana, sadece tuş vuruşu göndermek için SendInput veya keybd_event kullanabilirsiniz.