KeyboardProc-Rückruffunktion

BESCHREIBUNG

Eine anwendungsdefinierte oder bibliotheksdefinierte Rückruffunktion, die mit der SetWindowsHookExA-Funktion/SetWindowsHookExW verwendet wird .

Das System ruft diese Funktion immer dann auf, wenn eine Anwendung die GetMessage - oder PeekMessageA/PeekMessageW-Funktion aufruft und eine Tastaturnachricht (WM_KEYUP oder WM_KEYDOWN verarbeitet werden soll.

Der HOOKPROC-Typ definiert einen Zeiger auf diese Rückruffunktion. KeyboardProc ist ein Platzhalter für den anwendungsdefinierte oder bibliotheksdefinierte Funktionsnamen.

LRESULT CALLBACK KeyboardProc(
  _In_ int    code,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

Parameter

Code [in]

Typ: int

Ein Code, den die Hookprozedur verwendet, um zu bestimmen, wie die Nachricht verarbeitet werden soll.

Wenn der Code kleiner als 0 ist, muss die Hookprozedur die Nachricht ohne weitere Verarbeitung an die CallNextHookEx-Funktion übergeben und den von CallNextHookEx zurückgegebenen Wert zurückgeben.

Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
HC_ACTION 0 Die Parameter wParam und lParam enthalten Informationen zu einer Tastatureingabemeldung.
HC_NOREMOVE 3 Die Parameter wParam und lParam enthalten Informationen zu einer Tastatureingabenachricht, und die Tastatureingabenachricht wurde nicht aus der Nachrichtenwarteschlange entfernt. (Eine Anwendung namens PeekMessage-Funktion , die das flag PM_NOREMOVE angibt.)

wParam [in]

Typ: WPARAM

Der Virtuelle Schlüsselcode des Schlüssels, der die Tastatureingabemeldung generiert hat.

lParam [in]

Typ: LPARAM

Die Wiederholungsanzahl, der Scancode, das Flag mit erweiterter Taste, der Kontextcode, das vorherige Schlüsselzustandsflag und das Übergangszustandsflaggen. Weitere Informationen zum Parameter lParam finden Sie unter Flags für Tastenanschläge. In der folgenden Tabelle werden die Bits dieses Werts beschrieben.

Bits BESCHREIBUNG
0-15 Die Wiederholungsanzahl. Der Wert ist die Häufigkeit, wie die Tasteneingabe wiederholt wird, wenn der Benutzer die Taste gedrückt hält.
16-23 Der Scancode. Der Wert ist OEM-spezifisch.
24 Gibt an, ob es sich bei der Taste um einen erweiterten Schlüssel handelt, z. B. eine Funktionstaste oder eine Taste auf der numerischen Tastatur. Der Wert ist 1, wenn es sich bei dem Schlüssel um einen erweiterten Schlüssel handelt. andernfalls ist es 0.
25-28 Reserviert.
29 Der Kontextcode. Der Wert ist 1, wenn die ALT-Taste ausgefallen ist. andernfalls ist es 0.
30 Der vorherige Tastenstatus. Der Wert ist 1, wenn der Schlüssel ausfällt, bevor die Nachricht gesendet wird. sie ist 0, wenn der Schlüssel aktiviert ist.
31 Der Übergangsstatus. Der Wert ist 0, wenn die Taste gedrückt wird, und 1, wenn sie freigegeben wird.

Gibt zurück

Typ: LRESULT

Wenn der Code kleiner als 0 ist, muss die Hookprozedur den von CallNextHookEx zurückgegebenen Wert zurückgeben.

Wenn der Code größer oder gleich null ist und die Hookprozedur die Nachricht nicht verarbeitet hat, wird dringend empfohlen, CallNextHookEx aufzurufen und den zurückgegebenen Wert zurückzugeben. Andernfalls erhalten andere Anwendungen, die WH_KEYBOARD Hooks installiert haben, keine Hookbenachrichtigungen und verhalten sich daher möglicherweise falsch.

Wenn die Hookprozedur die Nachricht verarbeitet hat, gibt sie möglicherweise einen nichtzero-Wert zurück, um zu verhindern, dass das System die Nachricht an den Rest der Hookkette oder die Zielfensterprozedur übergibt.

Hinweise

Eine Anwendung installiert die Hookprozedur, indem sie den WH_KEYBOARD Hooktyp und einen Zeiger auf die Hookprozedur in einem Aufruf der SetWindowsHookExA/SetWindowsHookExW-Funktion angibt.

Dieser Hook kann im Kontext des Threads aufgerufen werden, von dem er installiert wurde. Der Aufruf erfolgt durch Senden einer Nachricht an den Thread, der den Hook installiert hat. Daher muss der Thread, der den Hook installiert hat, über eine Nachrichtenschleife verfügen.

Siehe auch