Frage

Ich habe in der Lage lokale Hotkeys wie diese

einstellen
 RegisterHotKey(hwndDlg, 100, MOD_ALT | MOD_CONTROL, 'S');

Wie kann ich den Hotkey global sein? Ich will es dort sein, auch wenn mein Fenster versteckt ist.

War es hilfreich?

Lösung

Ich löste es mich aber vielen Dank für Ihre Antwort hier ist, was falsch war ...

ShowWindow(hwndDlg, SW_HIDE);
RegisterHotKey(hwndDlg, 100, MOD_ALT | MOD_CONTROL, 'S');

Wenn Sie den Hotkey zuerst registrieren Sie dann das Fenster verbergen ... ignoriert die Hotkey aus irgendeinem Grund ... na ja .. es funktioniert jetzt:)

Andere Tipps

http: // msdn .microsoft.com / ru-RU / library / windows / Desktop / ms646309 (v = VS.85) aspx

  

hWnd [in, optional]

     

Typ: HWND

     

<...> Wenn diese Parameter NULL sind, WM_HOTKEY Nachrichten werden an den entsandte   Nachrichtenwarteschlange des anrufenden Faden und muss in der verarbeitet werden   Nachrichtenschleife.

Das ist ein besserer Weg, globalen Hotkeys für die Registrierung.

Es spielt keine Rolle, ob Ihr Fenster sichtbar ist oder nicht. Sie sollten keine hWnd Sie (wie ein Dialog) zerstören wollen verwenden. Erstellen Sie ein separates (unsichtbar) Fenster, wenn Sie keine anderen geeignete Fenster.

Zuerst definieren Sie eine oder mehrere Konstanten für Ihre Hotkeys

#define HOTKEY1 1000
#define HOTKEY2 1002

Dann registrieren Sie diese Hotkeys

RegisterHotKey(NULL, HOTKEY1, MOD_ALT + MOD_SHIFT, 0x53); // ALT+SHIFT+s
RegisterHotKey(NULL, HOTKEY2, MOD_ALT + MOD_SHIFT, 0x51); // ALT+SHIFT+q

Schließlich im Main Event sehen Sie diese Hotkeys überwachen und auf sie reagieren:

         if (msg.message == HOTKEY1)
         {
             switch (LOWORD(msg.wParam))
             {
             case HOTKEY1:
                 // do such and such
                 break;
             case HOTKEY2:
                 // do such and such
                 break
             }
         }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top