2011-09-20 5 views
0

글로벌 단축키에 등록 할 방법을 검색합니다. 키를 누를 때 메소드를 트리거 할 수 있습니다.Windows CE의 글로벌 단축키 등록

Windows CE 및 Windows Mobile> = 5에서 작동해야합니다.

[편집 : 응용 프로그램이 숨겨져 및/또는 폼에 포커스가 없을 때 그것은 또한 작동 할 필요]

+0

'RegisterHotkey'가 작동하지 않는다는 것이 이상하다는 것을 알게되었습니다. 애플리케이션에 포커스가 없을 때 작동하는 글로벌 단축키 용으로 설계되었습니다. – CodesInChaos

답변

1

RegisterHotKey가 어떤 이유로 든 원하는 작업을 수행하지 못하면 keyboard hook을 입력하십시오. 후크는 "공식적으로"지원되지 않지만 키보드는 정상적으로 작동합니다.

+0

'RegisterHotkey'가 작동하면 이것을 피할 수 있습니다. 이것은 어떤 이유에서든'RegisterHotkey'를 사용할 수 없다면 최후의 수단 일뿐입니다. 이것이 데스크탑 애플리케이션이라면 나는 downvote 할 것이지만, WinCE가 필요할지 모른다면 WinCE에 대해 충분히 알지 못한다. – CodesInChaos

+0

물론, 그는 RegisterHotKey를 시도해야합니다. SetWindowsHook에 대한 근본적인 혐오감이 무엇인지는 모르지만 10 년 이상 Windows CE 장치 용으로 개발되어 왔지만 어떤 경로로 가야할지 알고 있습니다. – ctacke

+0

낮은 수준의 키보드 후크 문제는 모든 키보드 입력이 키보드 입력을 통과해야하므로 스레드가 빠르게 응답하지 않아 지연 될 수 있다는 것입니다. 이것이 완전히 나를 물결 치게 한 예는 높은 우선 순위를 어리 석음으로 사용하고 낮은 수준의 키보드 후크를 가진 다른 프로그램을 굶어 버린 게임이었습니다. 이로 인해 입력 지연 시간이 여러 초가 걸렸습니다. 나는 LL 키보드 후크를 사용했지만, 'RegisterHotkey'옵션이없는 상황에서만 사용한다. – CodesInChaos

1

당신은 coredll에 정의 RegisterHotKey 기능을 사용할 수 있습니다. devbuzz 포럼에서 다음을 호출하는 code for c# hotkey register/unregister이라는 게시물을 찾을 수 있습니다.

또 다른 방법은 별도의 스레드를 실행하고 허용되는 절전 시간의 루프에서 GetAsyncKeyState을 호출하는 것입니다. GetAsyncKeyState은 키보드 포커스와 독립적이어야합니다.

+0

또한 시도했지만이 앱이 백그라운드에서 실행될 때 작동하지 않았습니다. – mabstrei

+0

GetAsyncKeyState를 포함하도록 답변을 업데이트했습니다. –

+2

GetAsyncKeyState는 모호한 선택입니다. 예를 들어 조합의 여러 키가 동시에 눌려져 우발적 인 트리거로 연결되는지 여부를 확인할 수 없습니다. 적어도 바탕 화면 창에는 추가 문제가 있습니다. 예를 들어 핫키 확인 코드는 응용 프로그램이 현재 포 그라운드 프로그램에서 포커스를 훔칠 수있는 곳으로 인식되지 않습니다. – CodesInChaos

0

당신은 RegisterHotKey 기능을

주를 사용할 수 있습니다 : Microsoft에서 제공 한이 API는 전체 윈도우 CE OS 패키지의 일부입니다. 특정 플랫폼의 기능은 OEM (Original Equipment Manufacturer)에 의해 결정되며 일부 장치는이 API를 지원하지 않을 수 있습니다.

관련 문제