Função de retorno de chamada KeyboardProc
Descrição
Uma função de retorno de chamada definida pelo aplicativo ou definida pela biblioteca usada com a função SetWindowsHookExA/SetWindowsHookExW .
O sistema chama essa função sempre que um aplicativo chama a função GetMessage ou PeekMessageA/PeekMessageW e há uma mensagem de teclado (WM_KEYUP ou WM_KEYDOWN a ser processada.
O tipo HOOKPROC define um ponteiro para essa função de retorno de chamada. KeyboardProc é um espaço reservado para o nome da função definida pelo aplicativo ou definida pela biblioteca.
LRESULT CALLBACK KeyboardProc(
_In_ int code,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
Parâmetros
code [in]
Tipo: int
Um código que o procedimento de gancho usa para determinar como processar a mensagem.
Se o código for menor que zero, o procedimento de gancho deverá passar a mensagem para a função CallNextHookEx sem processamento adicional e deverá retornar o valor retornado por CallNextHookEx.
Esse parâmetro pode usar um dos valores a seguir.
Valor | Significado |
---|---|
HC_ACTION 0 | Os parâmetros wParam e lParam contêm informações sobre uma mensagem de pressionamento de tecla. |
HC_NOREMOVE 3 | Os parâmetros wParam e lParam contêm informações sobre uma mensagem de pressionamento de tecla e a mensagem de pressionamento de tecla não foi removida da fila de mensagens. (Um aplicativo chamado função PeekMessage , especificando o sinalizador PM_NOREMOVE .) |
wParam [in]
Tipo: WPARAM
O código de chave virtual da chave que gerou a mensagem de pressionamento de tecla.
lParam [in]
Tipo: LPARAM
A contagem de repetição, o código de verificação, o sinalizador de chave estendida, o código de contexto, o sinalizador de estado-chave anterior e o sinalizador de estado de transição. Para obter mais informações sobre o parâmetro lParam , consulte Sinalizadores de mensagem de pressionamento de tecla. A tabela a seguir descreve os bits desse valor.
Bits | Descrição |
---|---|
0-15 | A contagem de repetição. O valor é o número de vezes que o pressionamento de tecla é repetido como resultado da tecla pressionada pelo usuário. |
16-23 | O código de verificação. O valor depende do OEM. |
24 | Indica se a chave é uma chave estendida, como uma chave de função ou uma chave no teclado numérico. O valor será 1 se a chave for uma chave estendida; caso contrário, é 0. |
25-28 | Reservado. |
29 | O código de contexto. O valor será 1 se a chave ALT estiver inativa; caso contrário, é 0. |
30 | O estado anterior da tecla. O valor será 1 se a chave estiver inativa antes do envio da mensagem; será 0 se a chave estiver ativada. |
31 | O estado de transição. O valor será 0 se a tecla estiver sendo pressionada e 1 se estiver sendo liberada. |
Retornos
Tipo: LRESULT
Se o código for menor que zero, o procedimento de gancho deverá retornar o valor retornado por CallNextHookEx.
Se o código for maior ou igual a zero e o procedimento de gancho não processar a mensagem, é altamente recomendável que você chame CallNextHookEx e retorne o valor retornado; caso contrário, outros aplicativos que instalaram ganchos de WH_KEYBOARD não receberão notificações de gancho e poderão se comportar incorretamente como resultado.
Se o procedimento de gancho tiver processado a mensagem, ele poderá retornar um valor diferente de zero para impedir que o sistema passe a mensagem para o restante da cadeia de ganchos ou o procedimento da janela de destino.
Comentários
Um aplicativo instala o procedimento de gancho especificando o tipo de gancho WH_KEYBOARD e um ponteiro para o procedimento de gancho em uma chamada para a função SetWindowsHookExA/SetWindowsHookExW .
Esse gancho pode ser chamado no contexto do thread que o instalou. A chamada é feita enviando uma mensagem para o thread que instalou o gancho. Portanto, o thread que instalou o gancho deve ter um loop de mensagem.