Funzione RegisterHotKey (winuser.h)
Definisce una chiave di scelta rapida a livello di sistema.
Sintassi
BOOL RegisterHotKey(
[in, optional] HWND hWnd,
[in] int id,
[in] UINT fsModifiers,
[in] UINT vk
);
Parametri
[in, optional] hWnd
Tipo: HWND
Handle alla finestra che riceverà WM_HOTKEY messaggi generati dalla chiave di scelta rapida. Se questo parametro è NULL, WM_HOTKEY i messaggi vengono pubblicati nella coda dei messaggi del thread chiamante e devono essere elaborati nel ciclo del messaggio.
[in] id
Tipo: int
Identificatore della chiave di scelta rapida. Se il parametro hWnd è NULL, il tasto di scelta rapida è associato al thread corrente anziché a una determinata finestra. Se esiste già una chiave di scelta rapida con gli stessi parametri hWnd e ID , vedere Osservazioni per l'azione eseguita.
[in] fsModifiers
Tipo: UINT
I tasti che devono essere premuti in combinazione con il tasto specificato dal parametro vk per generare il messaggio di WM_HOTKEY . Il parametro fsModifiers può essere una combinazione dei valori seguenti.
[in] vk
Tipo: UINT
Codice della chiave virtuale della chiave di scelta rapida. Vedere Codici chiave virtuale.
Valore restituito
Tipo: BOOL
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
Quando viene premuto un tasto, il sistema cerca una corrispondenza con tutti i tasti di scelta rapida. Dopo aver trovato una corrispondenza, il sistema pubblica il messaggio di WM_HOTKEY alla coda di messaggi della finestra con cui è associata la chiave di scelta rapida. Se il tasto di scelta rapida non è associato a una finestra, il messaggio di WM_HOTKEY viene inviato al thread associato alla chiave di scelta rapida.
Questa funzione non può associare una chiave di scelta rapida a una finestra creata da un altro thread.
RegisterHotKey ha esito negativo se le sequenze di tasti specificate per la chiave di scelta rapida sono già state registrate da un'altra chiave di scelta rapida.
Se esiste già una chiave di scelta rapida con gli stessi parametri hWnd e ID , viene mantenuta insieme alla nuova chiave di scelta rapida. L'applicazione deve chiamare in modo esplicito UnregisterHotKey per annullare la registrazione della chiave di scelta rapida precedente.
Windows Server 2003: Se esiste già una chiave di scelta rapida con gli stessi parametri hWnd e ID , viene sostituito dalla nuova chiave di scelta rapida.
La chiave F12 è riservata all'uso da parte del debugger in ogni momento, quindi non deve essere registrata come chiave di scelta rapida. Anche quando non si esegue il debug di un'applicazione, F12 è riservato nel caso in cui un debugger in modalità kernel o un debugger just-in-time sia residente.
Un'applicazione deve specificare un valore ID nell'intervallo 0x0000 tramite 0xBFFF. Una DLL condivisa deve specificare un valore nell'intervallo 0xC000 tramite 0xFFFF (intervallo restituito dalla funzione GlobalAddAtom ). Per evitare conflitti con identificatori a chiave rapida definiti da altre DLL condivise, una DLL deve usare la funzione GlobalAddAtom per ottenere l'identificatore a chiave rapida.
Esempio
Nell'esempio seguente viene illustrato come usare la funzione RegisterHotKey con il flag di MOD_NOREPEAT . In questo esempio, il tasto di scelta rapida "ALT+b" viene registrato per il thread principale. Quando viene premuto il tasto di scelta rapida, il thread riceverà un messaggio di WM_HOTKEY , che verrà raccolto nella chiamata GetMessage . Poiché questo esempio usa MOD_ALT con il valore MOD_NOREPEAT per fsModifiers, il thread riceverà solo un altro messaggio WM_HOTKEY quando viene rilasciato il tasto 'b' e quindi premuto di nuovo mentre il tasto 'ALT' viene premuto verso il basso.
#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;
}
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | winuser.h (include Windows.h) |
Libreria | User32.lib |
DLL | User32.dll |
Vedi anche
Informazioni concettuali
Riferimento
Registrare il tasto di scelta rapida per l'app corrente (CSRegisterHotkey)
Registrare l'opzione hotkey per l'app corrente (CppRegisterHotkey)
Registrare il tasto di scelta rapida per l'app corrente (VBRegisterHotkey)
Esempi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per