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.