JournalRecordProc-Funktion
BESCHREIBUNG
Eine anwendungs- oder bibliotheksdefinierte Rückruffunktion, die mit der SetWindowsHookEx-Funktion verwendet wird. Die Funktion zeichnet Meldungen auf, die das System aus der Systemnachrichtenwarteschlange entfernt. Später kann eine Anwendung eine JournalPlaybackProc-Hookprozedur verwenden, um die Nachrichten wiederzuverspielen.
Der HOOKPROC-Typ definiert einen Zeiger auf diese Rückruffunktion. JournalRecordProc ist ein Platzhalter für den anwendungs- oder bibliotheksdefinierten Funktionsnamen.
LRESULT CALLBACK JournalRecordProc(
_In_ int code,
WPARAM wParam,
_In_ LPARAM lParam
);
Parameter
Code [in]
Typ: int
Gibt an, wie die Nachricht zu verarbeiten ist. Wenn der Code kleiner als 0 (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 Nachricht enthält, die aus der Systemwarteschlange entfernt wurde. Die Hookprozedur muss den Inhalt der -Struktur aufzeichnen, indem sie sie in einen Puffer oder eine Datei kopiert. |
| HC_SYSMODALOFF 5 | Ein system modales Dialogfeld wurde zerstört. Die Hookprozedur muss die Aufzeichnung fortsetzen. |
| HC_SYSMODALON 4 | Ein system modales 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 zu notierende Nachricht enthält.
Gibt zurück
Typ: LRESULT
Der Rückgabewert wird ignoriert.
Hinweise
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 nicht in einer Dynamic Link Library gespeichert werden. Eine JournalRecordProc-Hookprozedur kann in der Anwendung selbst verwendet werden.
Im Gegensatz zu den meisten anderen globalen Hookprozeduren werden die Hookprozeduren JournalRecordProc und JournalPlaybackProc immer im Kontext des Threads aufgerufen, der den Hook festlegen.
Eine Anwendung, die eine JournalRecordProc-Hookprozedur installiert hat, sollte auf den virtuellen VK_CANCEL-Schlüsselcode achten (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 reagieren, indem sie die Aufzeichnungssequenz beendet und die Hookprozedur JournalRecordProc entfernt. Das Entfernen ist wichtig. Sie 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 TASTENKOMBINATION STRG+BREAK nicht selbst aufgezeichnet werden kann. Da die Tastenkombination STRG+C keine rolle wie ein 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 Journalingaktivitäten (Aufzeichnung oder Wiedergabe) stoppt, alle Journalinghooks entfernt und eine WM_CANCELJOURNAL an die Journalanwendung übermittelt.