2011-10-01 2 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'를 탐색기에 전달하고 탐색기는 볼륨을 조정합니다. 앱의 볼륨 버튼을 오버라이드하고 싶다면'WM_APPCOMMAND' 메시지에 응답하십시오. –

+0

@ 레이몬드 - 너 너무 빨라? 최상위 창에서 WM_APPCOMMAND의 DefWindowProc 처리는 셸 후크 afaik를 호출합니다. WM_KEYDOWN 처리가 WM_APPCOMMAND를 Explorer에 곧바로 보내는 경우에는 응답 할 수 없습니다. –

+0

예,'WM_APPCOMMAND'는 쉘 훅을 통해 Explorer로갑니다. 요점은 익스플로러가'DefWindowProc'가 아닌 볼륨을 변경한다는 것입니다. 구별은이 질문에 중요하지 않지만 비슷한 질문에 영향을줍니다. –

0

일반적으로 가능하지 않다고 생각합니다. fn-keys는 일반적으로 BIOS-SMM-ACPI가 처리하며 사용자 프로그램에 액세스 할 수 없습니다.

아마도 표준 멀티미디어 볼륨 업 키로 변환 되었다면 얻을 수는 있지만 그걸 내기는 어렵습니다.

관련 문제