Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Determina se uma tecla está para cima ou para baixo no momento em que a função é chamada e se a tecla foi pressionada após uma chamada anterior para GetAsyncKeyState.
Sintaxe
SHORT GetAsyncKeyState(
[in] int vKey
);
Parâmetros
[in] vKey
Tipo: int
O código de chave virtual. Para obter mais informações, consulte Códigos de Chave Virtual.
Você pode usar constantes de distinção esquerda e direita para especificar determinadas chaves. Consulte a seção Comentários para obter mais informações.
Valor de retorno
Tipo: SHORT
Se a função for bem-sucedida, o valor retornado especifica se a tecla foi pressionada desde a última chamada para GetAsyncKeyState e se a chave está atualmente para cima ou para baixo. Se o bit mais significativo for definido, a tecla estará inoperante e, se o bit menos significativo for definido, a tecla será pressionada após a chamada anterior para GetAsyncKeyState. No entanto, você não deve confiar nesse último comportamento; para obter mais informações, consulte os Comentários.
O valor retornado é zero para os seguintes casos:
- A área de trabalho atual não é a área de trabalho ativa
- O thread de primeiro plano pertence a outro processo e a área de trabalho não permite o gancho ou o registro de diário.
Observações
A função GetAsyncKeyState funciona com botões de mouse. No entanto, ele verifica o estado dos botões físicos do mouse, não nos botões lógicos do mouse para os quais os botões físicos são mapeados. Por exemplo, a chamada GetAsyncKeyState(VK_LBUTTON) sempre retorna o estado do botão do mouse físico esquerdo, independentemente de ele ser mapeado para o botão do mouse lógico esquerdo ou direito. Você pode determinar o mapeamento atual do sistema de botões físicos do mouse para botões lógicos do mouse chamando GetSystemMetrics(SM_SWAPBUTTON).
que retornará TRUE se os botões do mouse tiverem sido trocados.
Embora o bit menos significativo do valor retornado indique se a tecla foi pressionada desde a última consulta, devido à natureza de multitarefa preemptiva do Windows, outro aplicativo pode chamar GetAsyncKeyState e receber o bit "recentemente pressionado" em vez de seu aplicativo. O comportamento do bit menos significativo do valor retornado é mantido estritamente para compatibilidade com aplicativos Windows de 16 bits (que não são preemptivos) e não devem ser confiados.
Você pode usar as constantes de código de chave virtual VK_SHIFT, VK_CONTROL e VK_MENU como valores para o parâmetro vKey . Isso fornece o estado das teclas SHIFT, CTRL ou ALT sem distinguir entre a esquerda e a direita.
Você pode usar as seguintes constantes de código de chave virtual como valores para vKey para distinguir entre as instâncias esquerda e direita dessas chaves.
| Code | Meaning |
|---|---|
| VK_LSHIFT | Chave de deslocamento à esquerda. |
| VK_RSHIFT | Chave de deslocamento para a direita. |
| VK_LCONTROL | Chave de controle esquerdo. |
| VK_RCONTROL | Chave de controle à direita. |
| VK_LMENU | Chave do menu esquerdo. |
| VK_RMENU | Tecla do menu direito. |
Essas constantes de distinção esquerda e direita só estão disponíveis quando você chama as funções GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState e MapVirtualKey .
Example
while (GetMessage(&msg, nullptr, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
switch (msg.message)
{
case WM_KEYDOWN:
if ((GetAsyncKeyState(VK_ESCAPE) & 0x01) && bRunning)
{
Stop();
}
break;
}
}
Exemplo de de Exemplos Clássicos do Windows no GitHub.
Requirements
| Requirement | Value |
|---|---|
| Cliente mínimo suportado | Windows 2000 Professional [somente aplicativos da área de trabalho] |
| Servidor mínimo compatível | Windows 2000 Server [somente aplicativos da área de trabalho] |
| da Plataforma de Destino |
Windows |
| Header | winuser.h (inclua Windows.h) |
| Library | User32.lib |
| de DLL | User32.dll |