CTRL 키의 이중 프레스에 어떻게 연결합니까?
문제
내가 찾고있는 것은 Google 데스크탑과 유사한 기능입니다. 당신이 쳤을 때 Ctrl 키 두 번 빠르게 검색 상자가 나타납니다.
어딘가에서 찾은 상당히 무거운 키보드 후크 클래스를 사용하려고 시도했지만 계속해서 MeunPredictable 결과를 제공했습니다 (예 : 처음으로 작동 할 때 Ctrl 키 한 번, 키 프레스 이벤트를 여러 번 올릴 것입니까?).
어쨌든, 이것은 단지 복잡 해야하는 것처럼 보이지 않기 때문에 뭔가 잘못하고 있어야한다고 생각합니다. 내 앱 (WPF 앱)은 기본 창의 가시성이 숨겨지고 작업 표시 줄에 상주하지 않고 실행됩니다. 내가 수행 할 때 Ctrl 키 - Ctrl 키, 나는 그것을 잡고 창을 보여주고 싶다.
한 가지 다른 측면 문제 - 나는 현재 핫 키를 등록 하여이 작업을 수행하고 있지만, 내가 원하는 전체 기능을 제공하지는 않습니다 (이중 압력 Ctrl 키). 창이 표시되면 더 이상 초점이 맞지 않을 때 100% 바보로 감지하는 방법을 찾지 못했습니다 (이런 일이 발생할 때 다시 숨기고 싶습니다). 나는 비활성화, LostFocus 등에 응답하려고 노력했으며 대부분의 시간 동안 그 일을 시도했습니다. 그러나 때로는 창이 실제로 활성화되거나 초점을 맞추지 않고 표시되는 것으로 보입니다. 이것에 대한 아이디어도?
감사!
아담
해결책
당신은 아마 사용하고 싶을 것입니다 setwindowshookex 키보드 이벤트에 낮은 수준으로 연결됩니다.
여기에 있습니다 C ++의 샘플 코드, 그리고 여기 있습니다 pinvoke.net의 항목, 이것은 이것을 c#에 포트하는 데 도움이 될 것입니다.
C# 코드의 경우 직접 사용할 수 있으면이 작업을 시도 할 수 있습니다. 코드 리젝트 샘플. 내 기억에서, 그것은 대부분의 경우 몇 가지 버그로 작동했습니다. 어느 시점에서 나는 이것을 JAD 엔진으로 포팅하는 데 도움을 주었다.useractivityhook)이를 달성하고 프로세스에서 몇 가지 버그를 수정했습니다. 시작하기에 아주 좋은 곳이 될 수 있습니다 ...
다른 팁
두 번째 질문은 표시 될 때 양식이 활성화되지 않으면 형태 당신이 그것을 표시 한 후. 간단한 디버깅의 경우 GotFocus, LostFocus, Enter, Exit 및 Activate, Exectivate Events를 비활성화하고 이러한 요구 사항을 일관되게 충족하는지 확인하십시오.