Domanda

Sono stato in grado di impostare tasti di scelta rapida locali come questo

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

Come posso impostare il tasto di scelta rapida su globale? Voglio che sia lì anche quando la mia finestra è nascosta.

È stato utile?

Soluzione

L'ho risolto da solo ma grazie per la tua risposta ecco cosa c'era di sbagliato ...

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

se prima registri il tasto di scelta rapida quindi nascondi la finestra ... ignora il tasto di scelta rapida per qualche motivo ... vabbè .. ora funziona :)

Altri suggerimenti

http: // msdn .microsoft.com / it-it / library / windows / desktop / ms646309 (v = vs.85) aspx

  

hWnd [in, opzionale]

     

Tipo: HWND

     

lt &; ... gt &; Se questo parametro è NULL, i messaggi WM_HOTKEY vengono registrati in   coda di messaggi del thread chiamante e deve essere elaborata in   ciclo di messaggi.

Questo è un modo migliore per registrare tasti di scelta rapida globali.

Non importa se la tua finestra è visibile o meno. Non dovresti usare un h e intendi distruggere (come una finestra di dialogo). Crea una finestra separata (invisibile) se non hai un'altra finestra adatta.

Per prima cosa definisci una o più costanti per i tuoi tasti di scelta rapida

#define HOTKEY1 1000
#define HOTKEY2 1002

Quindi registri questi tasti di scelta rapida

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

Infine, nel look dell'evento principale, controlli questi tasti di scelta rapida e rispondi:

         if (msg.message == HOTKEY1)
         {
             switch (LOWORD(msg.wParam))
             {
             case HOTKEY1:
                 // do such and such
                 break;
             case HOTKEY2:
                 // do such and such
                 break
             }
         }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top