Мне удалось установить локальные горячие клавиши, такие как
RegisterHotKey(hwndDlg, 100, MOD_ALT | MOD_CONTROL, 'S');
Как установить горячую клавишу как глобальную? Я хочу, чтобы он был там, даже когда мое окно скрыто.
Мне удалось установить локальные горячие клавиши, такие как
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, optional]
Тип: 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
}
}