¿Tecla de acceso rápido global con API WIN32?
-
10-07-2019 - |
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.
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
}
}