2012-12-17 3 views
1

사용자가 여러 가지 작업을 수행하기 위해 사용자 정의 키 조합을 정의 할 수 있도록 Registerhotkey를 사용 중입니다. 내가 가지고있는 것 같은 문제는 현재 키가 이미 있는지 확인할 방법이 없다는 것입니다.단축키 조합이 이미 존재하는지 확인하는 방법

예를 들면 : 내 테스터 중 한 명이 "Windows Key + D"를 정의하려고했지만 모든 창을 최소화하는 키 조합을 알지 못했습니다. 그래서 주어진 키 조합이 창이나 다른 응용 프로그램에 의해 이미 존재하는지 확인할 수있는 키 조합이 있는지 알려주는 방법이 있는지 궁금했습니다.

+1

http://msdn.microsoft.com/en-us/library/ms646309%28v=VS.85%29.aspx의 설명서에 따르면 "WINDOWS 키와 관련된 키보드 바로 가기는 운영 체제. " 응용 프로그램에서 사용자가 Windows 키 바로 가기를 정의하도록 허용해서는 안됩니다. –

+0

그 이후로 "Control + C"와 같은 문제가 여전히 존재할 것입니다. 키 조합이 다른 프로그램에서도 예약되어 있는지 알고 싶습니다. 기본적으로 내 사용자가 예외를 던지는 것보다 키 조합을 통해 뭔가가 있는지 확인하는 것이 좋습니다. –

+1

설명서에 "바로 가기 키에 지정된 키 입력이 다른 바로 가기 키에 의해 이미 등록 된 경우 RegisterHotKey가 실패합니다." 일반적인 키 조합 중 일부는 바로 가기 키가 아닐 수도 있습니다. 이러한 규칙을 지원하려면 응용 프로그램이 사용자가 충돌하는 바로 가기 키를 정의하지 못하게해야합니다. –

답변

2

덕분에 @ jim-mischel for helping me find this solution! 핫 키가있는 경우

확인하려면 간단히 다음을 수행하십시오 Control+C 이후

int ShortcutID = 100; // ID used for this Shortcut Key Combination 
uint keyModifier = 2; // This is the Control Key 
Char alphanumericKey = "C"; 
bool didItError 
    = RegisterHotKey(this.Handle, ShortcutID, keyModifier, (int)alphanumericKey); 

창문에 의해 등록 된 키 조합이 RegisterHotKey가 false를 반환합니다, 그것은이 사실 반환 등록 키 조합 아니었다면 !

+0

CTRL + V에서'true'를 어떻게 반환하는지 재밌 네요. –

관련 문제