2011-10-01 20 views
0

是否有可能使用c + +檢測win32系統卷加速器使用哪些鍵?例如:如果用戶按下fn +鍵(這也是改變系統音量的鍵組合),我想檢測此事件並對其作出響應。c + + win32獲取系統音量加速器

回答

2

這是由機器的BIOS處理。它產生一個擊鍵,VK_VOLUME_DOWN或VK_VOLUME_UP虛擬鍵。該WM_KEYDOWN消息的DefWindowProc處理產生WM_APPCOMMAND,APPCOMMAND_VOLUME_UP/DOWN。該消息的DefWindowProc處理調整音量。

+0

實際上,該消息的'DefWindowProc'處理將WM_APPCOMMAND轉發給Explorer,並且Explorer調整音量。如果您想覆蓋應用中的音量按鈕,請回復「WM_APPCOMMAND」消息。 –

+0

@雷蒙德 - 你不是太快了嗎?頂層窗口上的WM_APPCOMMAND的DefWindowProc處理調用shell hook afaik。如果WM_KEYDOWN處理直接向資源管理器發送WM_APPCOMMAND,則無法對其進行響應。 –

+0

是的,'WM_APPCOMMAND'通過shell鉤子進入資源管理器。重點在於它是Explorer來改變音量,而不是「DefWindowProc」。這個區別對這個問題並不重要,但它影響到類似的問題。 –

0

我不認爲這是可能的一般。 fn-keys通常由BIOS-SMM-ACPI來處理,而這對用戶程序是不可訪問的。

也許,如果它被翻譯成標準的多媒體音量提升密鑰,你可以得到那個,但我不會對它下注。