Freigeben über


JournalRecordProc-Funktion

BESCHREIBUNG

Eine anwendungsdefinierte oder bibliotheksdefinierte Rückruffunktion, die mit der SetWindowsHookEx-Funktion verwendet wird. Die Funktion zeichnet Nachrichten auf, die das System aus der Systemnachrichtenwarteschlange entfernt. Später kann eine Anwendung eine JournalPlaybackProc-Hookprozedur verwenden, um die Nachrichten wiederzugeben.

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

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

Parameter

Code [in]

Typ: int

Gibt an, wie die Nachricht verarbeitet wird. Wenn der Code kleiner als null 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 Der lParam-Parameter ist ein Zeiger auf eine EVENTMSG-Struktur , die Informationen zu einer Aus der Systemwarteschlange entfernten Nachricht enthält. Die Hookprozedur muss den Inhalt der Struktur aufzeichnen, indem sie in einen Puffer oder eine Datei kopiert wird.
HC_SYSMODALOFF 5 Ein systemmodales Dialogfeld wurde zerstört. Die Hookprozedur muss die Aufzeichnung fortsetzen.
HC_SYSMODALON 4 Ein systemmodales Dialogfeld wird angezeigt. Bis das Dialogfeld zerstört wird, muss die Hookprozedur die Aufzeichnung beenden.

wParam

Typ: WPARAM

Dieser Parameter wird nicht verwendet.

lParam [in]

Typ: LPARAM

Ein Zeiger auf eine EVENTMSG-Struktur , die die aufzuzeichnende Nachricht enthält.

Gibt zurück

Typ: LRESULT

Der Rückgabewert wird ignoriert.

Bemerkungen

Eine JournalRecordProc-Hookprozedur muss die Nachrichten kopieren, aber nicht ändern. Nachdem die Hookprozedur die Steuerung an das System zurückgegeben hat, wird die Nachricht weiterhin verarbeitet.

Installieren Sie die Hookprozedur JournalRecordProc , indem Sie den WH_JOURNALRECORD Typ und einen Zeiger auf die Hookprozedur in einem Aufruf der SetWindowsHookEx-Funktion angeben.

Eine JournalRecordProc-Hookprozedur muss sich nicht in einer Dynamic Link-Bibliothek befinden. Eine JournalRecordProc-Hookprozedur kann sich in der Anwendung selbst befinden.

Im Gegensatz zu den meisten anderen globalen Hookprozeduren werden die Hookprozeduren JournalRecordProc und JournalPlaybackProc immer im Kontext des Threads aufgerufen, der den Hook festgelegt hat.

Eine Anwendung, die eine JournalRecordProc-Hookprozedur installiert hat, sollte für den VK_CANCEL virtuellen Tastencode watch (der auf den meisten Tastaturen als Tastenkombination STRG+BREAK implementiert ist). Dieser virtuelle Schlüsselcode sollte von der Anwendung als Signal interpretiert werden, dass der Benutzer die Journalaufzeichnung beenden möchte. Die Anwendung sollte antworten, indem sie die Aufzeichnungssequenz beendet und die Hookprozedur JournalRecordProc entfernt. Das Entfernen ist wichtig. Dadurch wird verhindert, dass eine Journalanwendung das System sperrt, indem sie in einer Hookprozedur hängt.

Diese Rolle als Signal zum Beenden der Journl-Aufzeichnung bedeutet, dass eine STRG+BREAK-Tastenkombination nicht selbst aufgezeichnet werden kann. Da die Tastenkombination STRG+C keine Rolle als Journalsignal hat, kann sie aufgezeichnet werden. Es gibt zwei weitere Tastenkombinationen, die nicht aufgezeichnet werden können: STRG+ESC und STRG+ALT+ENTF. Diese beiden Tastenkombinationen bewirken, dass das System alle Journalaktivitäten (Aufzeichnen oder Wiedergeben) beendet, alle Journaling-Hooks entfernt und eine WM_CANCELJOURNAL Nachricht an die Journalanwendung übermittelt.

Siehe auch

CallNextHookEx

EVENTMSG

JournalPlaybackProc

SetWindowsHookEx

WM_CANCELJOURNAL

Hooks