2012-03-09 3 views
0

나는 어떻게 할 줄 안다 this 튜토리얼 덕분에 "글로벌 로우 레벨 키보드 후크" 덕분에. 내 생각은 내가 내 키보드의 키의 상태 아래 \까지 나타낼 수 플래그의 배열을 가질 수있는 무엇조합을위한 글로벌 로우 레벨 키보드 후크

나는 또한 조합 키 또는 바로 가기를 모니터링하고 싶었

. falg가 SET 또는 1 인 경우

단순히 키가 다운하고 UNSET 0을 때 키 업입니다.

조합 키 \ 바로 가기에 사용할 수 있습니다. 하나의 키가 눌려지면, 훅은 내가 이벤트를 처리 할 함수로 나를 데려 갈 것이다. 내가해야할 일은 다른 특정 플래그가 설정되어 있는지 확인하는 것입니다. 그렇다면 두 개의 키가 동시에 눌려져 있음을 의미하므로 조합이 있습니다.

이 트릭 작업을 할 수 있습니다.

내가 찾고있는 것이 더 좋은 옵션입니다. 있어요.

+3

코디 그레이 (Cody Gray)는 자신의 대답에서 글로벌 후크가 매우 무거웠다 고 지적했습니다. 대부분의 바이러스 백신 프로그램은 귀하의 앱을 즉시 스파이웨어로 표시하므로, 설치할 때마다 수동으로 AV 프로그램의 화이트리스트에 추가해야합니다. –

답변

4

예, 더 좋은 옵션은 RegisterHotKey function입니다.

글로벌 후크는 매우 무거운 접근 방식이며 절대적으로 필요한 곳에서만 사용해야합니다. 이 경우 글로벌 훅이 불필요하지만 단순히 원하는 키 시퀀스를 누를 때마다 WM_HOTKEY message에 자동으로 응답하는 것보다 구현하기가 더 복잡합니다.

.NET을 사용하고 있으므로 RegisterHotKey 함수를 P/Invoke해야합니다. ,

[DllImport("user32.dll", SetLastError = true)] 
static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk); 

WM_HOTKEY 메시지, 당신은 양식 (그 핸들 RegisterHotKey 함수를 호출 할 때 지정한 하나의 WndProc method를 재정 의하여 처리 할 수있는 다음과 같은 값에 해당
정의는 다음과 같은 : .

const int WM_HOTKEY = 0x0312; 

는 다른 필요한 값은 모두 명확하게 RegisterHotKey 기능에 대한 링크 된 문서에서 제공되는 문서는 물론, 독서를해야된다. 그렇지 않으면 당신은 중요한주의 사항을 놓칠

관련 문제