MessageProc-Funktion

BESCHREIBUNG

Eine anwendungsdefinierte oder bibliotheksdefinierte Rückruffunktion, die mit der SetWindowsHookExA-Funktion/SetWindowsHookExW verwendet wird. Das System ruft diese Funktion auf, nachdem ein Eingabeereignis in einem Dialogfeld, Meldungsfeld, Menü oder Bildlaufleiste auftritt, aber bevor die vom Eingabeereignis generierte Nachricht verarbeitet wird. Die Hookprozedur kann Nachrichten für ein Dialogfeld, ein Meldungsfeld, ein Menü oder eine Bildlaufleiste überwachen, die von einer bestimmten Anwendung oder allen Anwendungen erstellt wurde.

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

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

Parameter

Code [in]

Typ: int

Der Typ des Eingabeereignisses, das die Nachricht generiert hat.

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
MSGF_DDEMGR 0x8001 Das Eingabeereignis ist aufgetreten, während die Dynamic Data Exchange Management Library (DDEML) auf den Abschluss einer synchronen Transaktion wartete. Weitere Informationen zu DDEML finden Sie unter Dynamic Data Exchange Management Library.
MSGF_DIALOGBOX 0 Das Eingabeereignis ist in einem Meldungsfeld oder Dialogfeld aufgetreten.
MSGF_MENU 2 Das Eingabeereignis ist in einem Menü aufgetreten.
MSGF_SCROLLBAR 5 Das Eingabeereignis ist in einer Bildlaufleiste aufgetreten.

wParam

Typ: WPARAM

Dieser Parameter wird nicht verwendet.

lParam [in]

Typ: LPARAM

Ein Zeiger auf eine MSG-Struktur .

Gibt zurück

Typ: LRESULT

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

Wenn der Code größer als oder gleich 0 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_MSGFILTER Hooks installiert haben, keine Hookbenachrichtigungen und verhalten sich daher möglicherweise falsch. Wenn die Hookprozedur die Nachricht verarbeitet hat, wird möglicherweise ein Wert ungleich null zurückgegeben, um zu verhindern, dass das System die Nachricht an den Rest der Hookkette oder an die Zielfensterprozedur übergibt.

Bemerkungen

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

Wenn eine Anwendung, die die DDEML verwendet und synchrone Transaktionen ausführt, Nachrichten verarbeiten muss, bevor sie gesendet werden, muss sie den WH_MSGFILTER Hook verwenden.

Siehe auch

CallNextHookEx

SetWindowsHookEx

MSG

Hooks