CBTProc-Rückruffunktion

Eine anwendungsdefinierte oder bibliotheksdefinierte Rückruffunktion, die mit der SetWindowsHookExA-Funktion/SetWindowsHookExW verwendet wird . Das System ruft diese Funktion auf, bevor ein Fenster aktiviert, erstellt, zerstört, minimiert, maximiert, verschoben oder dimensioniert wird. vor Abschluss eines Systembefehls; vor dem Entfernen eines Maus- oder Tastaturereignisses aus der Systemnachrichtenwarteschlange; bevor Sie den Tastaturfokus festlegen; oder vor der Synchronisierung mit der Systemnachrichtenwarteschlange. Eine Anwendung für computerbasiertes Training (CBT) verwendet diese Hookprozedur, um nützliche Benachrichtigungen vom System zu erhalten.

Syntax

LRESULT CALLBACK CBTProc(
  _In_ int    nCode,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

Parameter

  • nCode [in]
    Typ: int

    Der Code, den die Hookprozedur verwendet, um zu bestimmen, wie die Nachricht verarbeitet werden soll. Wenn nCode 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
    HCBT_ACTIVATE 5

    Das System ist dabei, ein Fenster zu aktivieren.

    HCBT_CLICKSKIPPED 6

    Das System hat eine Mausnachricht aus der Systemnachrichtenwarteschlange entfernt. Beim Empfang dieses Hookcodes muss eine CBT-Anwendung als Reaktion auf die Mausnachricht eine WH_JOURNALPLAYBACK Hookprozedur installieren.

    HCBT_CREATEWND 3

    Ein Fenster wird gerade erstellt. Das System ruft die Hookprozedur auf, bevor die WM_CREATE - oder WM_NCCREATE-Nachricht an das Fenster gesendet wird. Wenn die Hookprozedur einen wert ohne Zero zurückgibt, zerstört das System das Fenster. Die CreateWindow-Funktion gibt NULL zurück, aber die WM_DESTROY Nachricht wird nicht an das Fenster gesendet. Wenn die Hookprozedur null zurückgibt, wird das Fenster normal erstellt.

    Zum Zeitpunkt der HCBT_CREATEWND Benachrichtigung wurde das Fenster erstellt, aber seine endgültige Größe und Position wurden möglicherweise nicht bestimmt, und sein übergeordnetes Fenster wurde möglicherweise nicht eingerichtet. Es ist möglich, Nachrichten an das neu erstellte Fenster zu senden, obwohl es noch keine WM_NCCREATE oder WM_CREATE Nachrichten empfangen hat. Es ist auch möglich, die Position in der z-Reihenfolge des neu erstellten Fensters zu ändern, indem Sie das Element hwndInsertAfter der CBT_CREATEWND-Struktur ändern.

    HCBT_DESTROYWND 4

    Ein Fenster wird zerstört.

    HCBT_KEYSKIPPED 7

    Das System hat eine Tastaturmeldung aus der Systemnachrichtenwarteschlange entfernt. Beim Empfang dieses Hookcodes muss eine CBT-Anwendung als Reaktion auf die Tastaturnachricht eine WH_JOURNALPLAYBACK Hookprozedur installieren.

    HCBT_MINMAX 1

    Ein Fenster wird minimiert oder maximiert.

    HCBT_MOVESIZE 0

    Ein Fenster wird gerade verschoben oder dimensioniert.

    HCBT_QS 2

    Das System hat eine WM_QUEUESYNC Nachricht aus der Systemnachrichtenwarteschlange abgerufen.

    HCBT_SETFOCUS 9

    Ein Fenster erhält den Tastaturfokus.

    HCBT_SYSCOMMAND 8

    Ein Systembefehl wird ausgeführt. Dadurch kann eine CBT-Anwendung den Vorgangswechsel mithilfe von Tastenkombinationen verhindern.

     
    • wParam [in]
      Typ: WPARAM

      Hängt vom nCode-Parameter ab. Ausführliche Informationen finden Sie im folgenden Abschnitt mit den Anmerkungen.

    • lParam [in]
      Typ: LPARAM

      Hängt vom nCode-Parameter ab. Ausführliche Informationen finden Sie im folgenden Abschnitt mit den Anmerkungen.

    Rückgabewert

    Typ:****

    Typ: LRESULT

    Der von der Hookprozedur zurückgegebene Wert bestimmt, ob das System einen dieser Vorgänge zulässt oder verhindert. Bei Vorgängen, die den folgenden CBT-Hookcodes entsprechen, muss der Rückgabewert 0 sein, um den Vorgang zuzulassen, oder 1, um ihn zu verhindern.

    • HCBT_ACTIVATE
    • HCBT_CREATEWND
    • HCBT_DESTROYWND
    • HCBT_MINMAX
    • HCBT_MOVESIZE
    • HCBT_SETFOCUS
    • HCBT_SYSCOMMAND

    Bei Vorgängen, die den folgenden CBT-Hookcodes entsprechen, wird der Rückgabewert ignoriert.

    • HCBT_CLICKSKIPPED
    • HCBT_KEYSKIPPED
    • HCBT_QS

    Bemerkungen

    Der HOOKPROC-Typ definiert einen Zeiger auf diese Rückruffunktion. CBTProc ist ein Platzhalter für den anwendungsdefinierten oder von der Bibliothek definierten Funktionsnamen.

    Die Hookprozedur sollte keine WH_JOURNALPLAYBACK Hookprozedur installieren, außer in den In der vorherigen Liste der Hookcodes beschriebenen Situationen.

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

    In der folgenden Tabelle werden die Parameter wParam und lParam für jeden HCBT_ Hookcode beschrieben.

    Wert wParam lParam
    HCBT_ACTIVATE Gibt das Handle für das Fenster an, das aktiviert werden soll. Gibt einen langen Zeiger auf eine CBTACTIVATESTRUCT-Struktur an, die den Handle auf das aktive Fenster enthält, und gibt an, ob sich die Aktivierung aufgrund eines Mausklicks ändert.
    HCBT_CLICKSKIPPED Gibt die Mausnachricht an, die aus der Systemnachrichtenwarteschlange entfernt wurde. Gibt einen langen Zeiger auf eine MOUSEHOOKSTRUCT-Struktur an, die den Treffertestcode und das Handle auf das Fenster enthält, für das die Mausnachricht vorgesehen ist.

    Der HCBT_CLICKSKIPPED Wert wird nur dann an eine CBTProc-Hookprozedur gesendet, wenn ein WH_MOUSE Hook installiert ist. Eine Liste der Treffertestcodes finden Sie unter WM_NCHITTEST.

    HCBT_CREATEWND Gibt das Handle zum neuen Fenster an. Gibt einen langen Zeiger auf eine CBT_CREATEWND-Struktur an, die Initialisierungsparameter für das Fenster enthält. Die Parameter umfassen die Koordinaten und Dimensionen des Fensters. Durch Ändern dieser Parameter kann eine CBTProc-Hookprozedur die anfängliche Größe und Position des Fensters festlegen.
    HCBT_DESTROYWND Gibt das Handle für das Fenster an, das zerstört werden soll. Ist undefiniert und muss auf Null festgelegt werden.
    HCBT_KEYSKIPPED Gibt den Code für den virtuellen Schlüssel an. Gibt die Wiederholungsanzahl, den Scancode, den Schlüsselübergangscode, den vorherigen Schlüsselzustand und den Kontextcode an. Der HCBT_KEYSKIPPED Wert wird nur dann an eine CBTProc-Hookprozedur gesendet, wenn ein WH_KEYBOARD Hook installiert ist. Weitere Informationen finden Sie unter WM_KEYUP oder WM_KEYDOWN.
    HCBT_MINMAX Gibt das Handle für das Fenster an, das minimiert oder maximiert wird. Gibt im Wort mit niedriger Reihenfolge einen Show-Window-Wert (SW_) an, der den Vorgang angibt. Eine Liste der Show-Window-Werte finden Sie unter ShowWindow. Das Wort mit hoher Ordnung ist nicht definiert.
    HCBT_MOVESIZE Gibt das Handle für das zu verschiebende oder zu verschiebende Fenster an. Gibt einen langen Zeiger auf eine RECT-Struktur an, die die Koordinaten des Fensters enthält. Durch Ändern der Werte in der Struktur kann eine CBTProc-Hookprozedur die endgültigen Koordinaten des Fensters festlegen.
    HCBT_QS Ist undefiniert und muss null sein. Ist undefiniert und muss null sein.
    HCBT_SETFOCUS Gibt das Handle für das Fenster an, das den Tastaturfokus erhält. Gibt das Handle für das Fenster an, das den Tastaturfokus verliert.
    HCBT_SYSCOMMAND Gibt einen Systembefehlswert (SC_) an, der den Systembefehl angibt. Weitere Informationen zu Systembefehlswerten finden Sie unter WM_SYSCOMMAND. Enthält die gleichen Daten wie der lParam-Wert einer WM_SYSCOMMAND Meldung: Wenn ein Systemmenübefehl mit der Maus ausgewählt wird, enthält das Wort mit niedriger Ordnung die x-Koordinate des Cursors in Bildschirmkoordinaten, und das Wort mit hoher Ordnung enthält die y-Koordinate; Andernfalls wird der Parameter nicht verwendet.

     

    Weitere Informationen finden Sie unter Windows-Ereignisse.

    Anforderungen

    Unterstützte Mindestversion (Client)

    Windows 2000 Professional [nur Desktop-Apps]

    Unterstützte Mindestversion (Server)

    Windows 2000 Server [nur Desktop-Apps]

    Header

    Winuser.h (einschließlich Windows.h)

    Siehe auch

    CallNextHookEx

    CreateWindowA/CreateWindowW

    SetWindowsHookExA/SetWindowsHookExW

    WM_SYSCOMMAND Nachricht

    Hooks