Pregunta

He podido configurar teclas de acceso rápido locales como esta

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

¿Cómo puedo configurar la tecla de acceso rápido para que sea global? Quiero que esté allí incluso cuando mi ventana esté oculta.

¿Fue útil?

Solución

Lo resolví yo mismo pero gracias por tu respuesta esto es lo que estaba mal ...

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

si registra la tecla de acceso rápido primero y luego oculta la ventana ... ignora la tecla de acceso rápido por alguna razón ... bueno, está funcionando ahora :)

Otros consejos

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

  

hWnd [en, opcional]

     

Tipo: HWND

     

< ... > Si este parámetro es NULL, los mensajes WM_HOTKEY se publican en el   cola de mensajes del hilo de llamada y debe procesarse   bucle de mensaje.

Esa es una mejor manera de registrar teclas de acceso rápido globales.

No importa si su ventana es visible o no. No debe usar un hWnd que planea destruir (como un cuadro de diálogo). Cree una ventana separada (invisible) si no tiene otra ventana adecuada.

Primero defina una o más constantes para sus teclas de acceso rápido

#define HOTKEY1 1000
#define HOTKEY2 1002

Luego registra estas teclas de acceso rápido

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

Finalmente, en el evento principal, observe estas teclas de acceso rápido y responda a ellas:

         if (msg.message == HOTKEY1)
         {
             switch (LOWORD(msg.wParam))
             {
             case HOTKEY1:
                 // do such and such
                 break;
             case HOTKEY2:
                 // do such and such
                 break
             }
         }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top