Вопрос

Я пытаюсь получить пользовательский глобальный горячий ключ для моего приложения. Вот мой код приложения,

user.rc.

CONTROL         "", IDC_MHOTKEY, HOTKEY_CLASS, WS_TABSTOP, 91, 86, 68, 14

Функция.cpp.

    WORD wHotKey = SendDlgItemMessage(hwnd, IDC_MHOTKEY, HKM_GETHOTKEY, 0, 0);
    GLOBAL_HOTKEY= wHotKey;
    RegisterHotKey ( NULL, TURN_OFF_HOTKEY, HIBYTE(LOWORD(wHotKey)) , wHotKey);

main.cpp.

   if ( messages.message == WM_HOTKEY && ( HIWORD ( messages.lParam ) == GLOBAL_HOTKEY) )
                        alert("Coming only for Single Key");

Этот код хорошо работает, только если пользователь выбирает один ключ, и не работает, когда он выбирает несколько клавиш, комбинированных, как Ctrl + F8.

Это было полезно?

Решение

Вам нужно изолировать виртуальный ключ из значения Whotkey:

RegisterHotKey ( NULL, 
    TURN_OFF_HOTKEY,  
    HIBYTE(LOWORD(wHotKey)),          // Modifiers
    LOBYTE(LOWORD(wHotKey))           // Virtual key
);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top