Win32 API와 함께 글로벌 핫키?
-
10-07-2019 - |
문제
나는 이와 같은 로컬 핫키를 설정할 수있었습니다
RegisterHotKey(hwndDlg, 100, MOD_ALT | MOD_CONTROL, 'S');
핫키를 어떻게 글로벌로 설정할 수 있습니까? 창문이 숨겨져있을 때에도 거기에 있기를 원합니다.
해결책
나는 그것을 직접 해결했지만 당신의 답장에 감사드립니다. 여기에 무엇이 잘못되었는지 ...
ShowWindow(hwndDlg, SW_HIDE);
RegisterHotKey(hwndDlg, 100, MOD_ALT | MOD_CONTROL, 'S');
먼저 핫키를 등록한 다음 창문을 숨기면 ... 어떤 이유로 핫키를 무시합니다 ... 오 잘 .. 지금 작동하고 있습니다 :)
다른 팁
http://msdn.microsoft.com/ru-ru/library/windows/desktop/ms646309(v=vs.85).aspx
HWND [in, 선택 사항
유형 : HWND
<...>이 매개 변수가 NULL 인 경우 WM_HOTKEY 메시지가 호출 스레드의 메시지 대기열에 게시되며 메시지 루프에서 처리해야합니다.
그것은 글로벌 핫키를 등록하는 더 좋은 방법입니다.
창문이 보이는지 여부는 중요하지 않습니다. 대화 상자와 같은 hwnd를 사용해서는 안됩니다 (대화 상자와 같이). 다른 적절한 창이없는 경우 별도의 (보이지 않는) 창을 만듭니다.
먼저 핫키에 대해 하나 이상의 상수를 정의합니다.
#define HOTKEY1 1000
#define HOTKEY2 1002
그런 다음이 핫 키를 등록합니다
RegisterHotKey(NULL, HOTKEY1, MOD_ALT + MOD_SHIFT, 0x53); // ALT+SHIFT+s
RegisterHotKey(NULL, HOTKEY2, MOD_ALT + MOD_SHIFT, 0x51); // ALT+SHIFT+q
마지막으로 메인 이벤트에서는이 핫 키를 모니터링하고 응답합니다.
if (msg.message == HOTKEY1)
{
switch (LOWORD(msg.wParam))
{
case HOTKEY1:
// do such and such
break;
case HOTKEY2:
// do such and such
break
}
}
제휴하지 않습니다 StackOverflow