Función RegisterHotKey (winuser.h)
Define una tecla de acceso rápido para todo el sistema.
Sintaxis
BOOL RegisterHotKey(
[in, optional] HWND hWnd,
[in] int id,
[in] UINT fsModifiers,
[in] UINT vk
);
Parámetros
[in, optional] hWnd
Tipo: HWND
Identificador de la ventana que recibirá WM_HOTKEY mensajes generados por la clave activa. Si este parámetro es NULL, WM_HOTKEY mensajes se publican en la cola de mensajes del subproceso de llamada y se deben procesar en el bucle de mensajes.
[in] id
Tipo: int
Identificador de la clave activa. Si el parámetro hWnd es NULL, la clave activa se asocia con el subproceso actual en lugar de con una ventana determinada. Si ya existe una clave activa con los mismos parámetros hWnd e id , vea Comentarios para la acción realizada.
[in] fsModifiers
Tipo: UINT
Teclas que se deben presionar en combinación con la tecla especificada por el parámetro vk para generar el mensaje de WM_HOTKEY . El parámetro fsModifiers puede ser una combinación de los valores siguientes.
[in] vk
Tipo: UINT
El código de clave virtual de la clave activa. Consulte Códigos de clave virtual.
Valor devuelto
Tipo: BOOL
Si la función se realiza correctamente, el valor devuelto es distinto de cero.
Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.
Comentarios
Cuando se presiona una tecla, el sistema busca una coincidencia con todas las teclas de acceso rápido. Después de encontrar una coincidencia, el sistema envía el mensaje WM_HOTKEY a la cola de mensajes de la ventana con la que está asociada la clave activa. Si la tecla activa no está asociada a una ventana, el mensaje de WM_HOTKEY se publica en el subproceso asociado a la clave activa.
Esta función no puede asociar una clave activa a una ventana creada por otro subproceso.
RegisterHotKey produce un error si otra tecla ha registrado las pulsaciones de tecla especificadas para la tecla activa.
Si ya existe una clave activa con los mismos parámetros hWnd e id , se mantiene junto con la nueva clave activa. La aplicación debe llamar explícitamente a UnregisterHotKey para anular el registro de la clave activa antigua.
Windows Server 2003: Si ya existe una clave activa con los mismos parámetros hWnd e id , se reemplaza por la nueva clave activa.
La clave F12 está reservada para su uso por el depurador en todo momento, por lo que no debe registrarse como una clave activa. Incluso cuando no se depura una aplicación, F12 se reserva en caso de que un depurador en modo kernel o un depurador Just-In-Time esté residente.
Una aplicación debe especificar un valor id en el intervalo 0x0000 a través de 0xBFFF. Un archivo DLL compartido debe especificar un valor en el intervalo 0xC000 a través de 0xFFFF (el intervalo devuelto por la función GlobalAddAtom ). Para evitar conflictos con identificadores de clave activa definidos por otros archivos DLL compartidos, un archivo DLL debe usar la función GlobalAddAtom para obtener el identificador de clave activa.
Ejemplos
En el ejemplo siguiente se muestra cómo usar la función RegisterHotKey con la marca MOD_NOREPEAT . En este ejemplo, la tecla de acceso rápido "ALT+b" está registrada para el subproceso principal. Cuando se presiona la tecla de acceso rápido, el subproceso recibirá un mensaje de WM_HOTKEY , que se recogerá en la llamada GetMessage . Dado que en este ejemplo se usa MOD_ALT con el valor de MOD_NOREPEAT para fsModifiers, el subproceso solo recibirá otro mensaje de WM_HOTKEY cuando se libere la tecla 'b' y vuelva a presionarse mientras se presiona la tecla 'ALT'.
#include "stdafx.h"
int _cdecl _tmain (
int argc,
TCHAR *argv[])
{
if (RegisterHotKey(
NULL,
1,
MOD_ALT | MOD_NOREPEAT,
0x42)) //0x42 is 'b'
{
_tprintf(_T("Hotkey 'ALT+b' registered, using MOD_NOREPEAT flag\n"));
}
MSG msg = {0};
while (GetMessage(&msg, NULL, 0, 0) != 0)
{
if (msg.message == WM_HOTKEY)
{
_tprintf(_T("WM_HOTKEY received\n"));
}
}
return 0;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | winuser.h (incluya Windows.h) |
Library | User32.lib |
Archivo DLL | User32.dll |
Consulte también
Conceptual
Referencia
Registrar la tecla de acceso rápido para la aplicación actual (CSRegisterHotkey)
Registrar la clave de acceso rápido para la aplicación actual (CppRegisterHotkey)
Registrar la clave de acceso rápido para la aplicación actual (VBRegisterHotkey)
Muestras
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de