Freigeben über


GetAsyncKeyState-Funktion (winuser.h)

Bestimmt, ob eine Taste zum Zeitpunkt des Aufrufs der Funktion nach oben oder unten ist und ob die Taste nach einem vorherigen Aufruf von GetAsyncKeyState gedrückt wurde.

Syntax

SHORT GetAsyncKeyState(
  [in] int vKey
);

Die Parameter

[in] vKey

Typ: int

Der virtuelle Schlüsselcode. Weitere Informationen finden Sie unter Virtual Key Codes.

Sie können links- und rechts unterscheidende Konstanten verwenden, um bestimmte Schlüssel anzugeben. Weitere Informationen finden Sie im Abschnitt "Hinweise".

Rückgabewert

Typ: SHORT

Wenn die Funktion erfolgreich ist, gibt der Rückgabewert an, ob die Taste seit dem letzten Aufruf von GetAsyncKeyState gedrückt wurde und ob die Taste aktuell nach oben oder unten ist. Wenn das wichtigste Bit festgelegt ist, ist die Taste nach unten und wenn das geringste signifikante Bit festgelegt ist, wurde die Taste nach dem vorherigen Aufruf von GetAsyncKeyState gedrückt. Sie sollten sich jedoch nicht auf dieses letzte Verhalten verlassen; weitere Informationen finden Sie in den Anmerkungen.

Der Rückgabewert ist null für die folgenden Fälle:

  • Der aktuelle Desktop ist nicht der aktive Desktop
  • Der Vordergrundthread gehört zu einem anderen Prozess, und der Desktop lässt den Hook oder den Journaldatensatz nicht zu.

Bemerkungen

Die GetAsyncKeyState-Funktion funktioniert mit Maustasten. Es überprüft jedoch den Zustand der physischen Maustasten, nicht auf die logischen Maustasten, denen die physischen Schaltflächen zugeordnet sind. Beispielsweise gibt der Aufruf GetAsyncKeyState(VK_LBUTTON) immer den Zustand der linken physischen Maustaste zurück, unabhängig davon, ob sie der linken oder rechten logischen Maustaste zugeordnet ist. Sie können die aktuelle Zuordnung physischer Maustasten zu logischen Maustasten durch Aufrufen GetSystemMetrics(SM_SWAPBUTTON)des Systems bestimmen.

gibt WAHR zurück, wenn die Maustasten getauscht wurden.

Obwohl das geringste signifikante Bit des Rückgabewerts angibt, ob die Taste seit der letzten Abfrage gedrückt wurde, kann eine andere Anwendung aufgrund der präemptiven Multitasking-Natur von Windows GetAsyncKeyState aufrufen und das Bit "zuletzt gedrückt" anstelle Ihrer Anwendung empfangen. Das Verhalten des am wenigsten signifikanten Bits des Rückgabewerts wird streng auf Kompatibilität mit 16-Bit-Windows-Anwendungen (die nicht preemptiv sind) beibehalten und sollten nicht verwendet werden.

Sie können die Virtual Key-Codekonstanten VK_SHIFT, VK_CONTROL und VK_MENU als Werte für den vKey-Parameter verwenden. Dadurch wird der Zustand der UMSCHALT-, STRG- oder ALT-TASTE ohne Unterscheidung zwischen links und rechts angezeigt.

Sie können die folgenden virtual-key-Codekonstanten als Werte für vKey verwenden, um zwischen den instanzen von links und rechts von diesen Schlüsseln zu unterscheiden.

Code Bedeutung
VK_LSHIFT NACH-LINKS-TASTE.
VK_RSHIFT NACH-RECHTS-TASTE.
VK_LCONTROL Tastenkombination für die linke Steuerung.
VK_RCONTROL Rechtssteuerungstaste.
VK_LMENU Linksmenütaste.
VK_RMENU Rechtsmenütaste.
 

Diese links- und rechts unterscheidenden Konstanten sind nur verfügbar, wenn Sie die Funktionen "GetKeyboardState", "SetKeyboardState", "GetAsyncKeyState", "GetKeyState" und "MapVirtualKey " aufrufen.

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;
    }
}

Beispiel aus Windows Classic Samples auf GitHub.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows 2000 Professional [nur Desktop-Apps]
Mindestanforderungen für unterstützte Server Windows 2000 Server [nur Desktop-Apps]
Zielplattform Fenster
Header winuser.h (enthalten Windows.h)
Library User32.lib
DLL User32.dll

Siehe auch