Função RegisterHotKey (winuser.h)
Define uma chave quente em todo o sistema.
Sintaxe
BOOL RegisterHotKey(
[in, optional] HWND hWnd,
[in] int id,
[in] UINT fsModifiers,
[in] UINT vk
);
Parâmetros
[in, optional] hWnd
Tipo: HWND
Um identificador para a janela que receberá WM_HOTKEY mensagens geradas pela chave ativa. Se esse parâmetro for NULL, WM_HOTKEY mensagens serão postadas na fila de mensagens do thread de chamada e deverão ser processadas no loop de mensagem.
[in] id
Tipo: int
O identificador da chave quente. Se o parâmetro hWnd for NULL, a chave ativa será associada ao thread atual e não a uma janela específica. Se já existir uma chave ativa com os mesmos parâmetros de hWnd
[in] fsModifiers
Tipo: UINT
As teclas que devem ser pressionadas em combinação com a tecla especificada pelo parâmetro vk para gerar a mensagem de WM_HOTKEY. O parâmetro fsModifiers pode ser uma combinação dos valores a seguir.
Value | significado |
---|---|
MOD_ALT 0x0001 |
Qualquer chave ALT deve ser mantida pressionada. |
MOD_CONTROL 0x0002 |
Qualquer chave CTRL deve ser mantida pressionada. |
MOD_NOREPEAT 0x4000 |
Altera o comportamento da tecla de acesso para que a repetição automática do teclado não gere várias notificações de tecla de acesso. Windows Vista: Não há suporte para esse sinalizador. |
MOD_SHIFT 0x0004 |
Qualquer chave SHIFT deve ser mantida pressionada. |
MOD_WIN 0x0008 |
Qualquer chave do WINDOWS deve ser mantida pressionada. Essas chaves são rotuladas com o logotipo do Windows. Os atalhos de teclado que envolvem a tecla WINDOWS são reservados para uso pelo sistema operacional. |
[in] vk
Tipo: UINT
O código de chave virtual da chave quente. Consulte de códigos de chave virtual.
Valor de retorno
Tipo: BOOL
Se a função for bem-sucedida, o valor retornado não será zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Essa função falhará se você tentar associar uma chave ativa a uma janela criada por outro thread.
Normalmente, RegisterHotKey também falharão se os pressionamentos de teclas especificados para a chave de acesso já tiverem sido registrados para outra chave frequente. No entanto, algumas teclas de acesso padrão pré-existentes registradas pelo sistema operacional (como PrintScreen, que inicia a ferramenta Snipping) podem ser substituídas por outro registro de chave frequente quando uma das janelas do aplicativo está em primeiro plano.
Observações
Quando uma tecla é pressionada, o sistema procura uma correspondência em relação a todas as teclas ativas. Ao encontrar uma correspondência, o sistema posta a mensagem WM_HOTKEY na fila de mensagens da janela com a qual a chave de acesso está associada. Se a tecla hot não estiver associada a uma janela, a mensagem de WM_HOTKEY será postada no thread associado à tecla hot.
Se já existir uma chave ativa com os mesmos parâmetros de hWnd e id, ela será mantida junto com a nova chave de acesso. O aplicativo deve chamar explicitamente UnregisterHotKey para cancelar o registro da chave quente antiga.
A chave F12 é reservada para uso pelo depurador o tempo todo, portanto, ela não deve ser registrada como uma chave ativa. Mesmo quando você não está depurando um aplicativo, f12 é reservado no caso de um depurador no modo kernel ou um depurador just-in-time é residente.
Um aplicativo deve especificar um valor de ID no intervalo 0x0000 até 0xBFFF. Uma DLL compartilhada deve especificar um valor no intervalo 0xC000 até 0xFFFF (o intervalo retornado pela função
**Windows Server 2003: **Se uma chave dinâmica já existir com o mesmo hWnd e id parâmetros, ela será substituída pela nova chave dinâmica.
Exemplos
O exemplo a seguir mostra como usar a função RegisterHotKey com o sinalizador MOD_NOREPEAT.
Neste exemplo, a tecla de acesso 'ALT+b' é registrada para o thread principal. Quando a tecla de acesso for pressionada, o thread receberá uma mensagem WM_HOTKEY, que será captada na chamada GetMessage. Como este exemplo usa MOD_ALT com o valor MOD_NOREPEAT para fsModifiers, o thread receberá apenas outra mensagem WM_HOTKEY quando a tecla 'b' for liberada e pressionada novamente enquanto a tecla 'ALT' estiver sendo pressionada para baixo.
#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 | Valor |
---|---|
de cliente com suporte mínimo | Windows Vista [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows Server 2003 [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | winuser.h (inclua Windows.h) |
biblioteca | User32.lib |
de DLL |
User32.dll |
Consulte também
de entrada do teclado
Registrar a chave de acesso para o aplicativo atual (CSRegisterHotkey)
Registrar a chave de acesso para o aplicativo atual (CppRegisterHotkey)