Freigeben über


SendMessageW-Funktion (winuser.h)

Sendet die angegebene Nachricht an ein Fenster oder fenster. Die SendMessage--Funktion ruft die Fensterprozedur für das angegebene Fenster auf und wird erst zurückgegeben, wenn die Fensterprozedur die Nachricht verarbeitet hat.

Um eine Nachricht sofort zu senden und sofort zurückzugeben, verwenden Sie die SendMessageCallback- oder SendNotifyMessage--Funktion. Um eine Nachricht in der Nachrichtenwarteschlange eines Threads zu posten und sofort zurückzugeben, verwenden Sie die PostMessage- oder PostThreadMessage- funktion.

Syntax

LRESULT SendMessageW(
  [in] HWND   hWnd,
  [in] UINT   Msg,
  [in] WPARAM wParam,
  [in] LPARAM lParam
);

Parameter

[in] hWnd

Typ: HWND-

Ein Handle für das Fenster, dessen Fensterprozedur die Nachricht empfängt. Wenn dieser Parameter HWND_BROADCAST ((HWND)0xffff ist), wird die Nachricht an alle Fenster der obersten Ebene im System gesendet, einschließlich deaktivierter oder unsichtbarer nicht verworfener Fenster, überlappenden Fenstern und Popupfenstern; die Nachricht wird jedoch nicht an untergeordnete Fenster gesendet.

Das Senden von Nachrichten unterliegt UIPI. Der Thread eines Prozesses kann Nachrichten nur an Nachrichtenwarteschlangen von Threads in Prozessen mit geringerer oder gleicher Integritätsebene senden.

[in] Msg

Typ: UINT-

Die zu sendende Nachricht.

Listen der vom System bereitgestellten Nachrichten finden Sie unter System-Defined Nachrichten.

[in] wParam

Typ: WPARAM-

Zusätzliche nachrichtenspezifische Informationen.

[in] lParam

Typ: LPARAM-

Zusätzliche nachrichtenspezifische Informationen.

Rückgabewert

Typ: LRESULT-

Der Rückgabewert gibt das Ergebnis der Nachrichtenverarbeitung an; sie hängt von der gesendeten Nachricht ab.

Bemerkungen

Wenn eine Nachricht vom UIPI blockiert wird, wird der letzte Fehler mit GetLastErrorabgerufen, auf 5 festgelegt (Zugriff verweigert).

Anwendungen, die mithilfe von HWND_BROADCAST kommunizieren müssen, sollten die RegisterWindowMessage--Funktion verwenden, um eine eindeutige Nachricht für die Kommunikation zwischen Anwendungen zu erhalten.

Das System marshallt nur für Systemmeldungen (die im Bereich 0 bis (WM_USER-1)). Um andere Nachrichten (die >= WM_USER) an einen anderen Prozess zu senden, müssen Sie benutzerdefinierte Marshalling durchführen.

Wenn das angegebene Fenster vom aufrufenden Thread erstellt wurde, wird die Fensterprozedur sofort als Unterroutine aufgerufen. Wenn das angegebene Fenster von einem anderen Thread erstellt wurde, wechselt das System zu diesem Thread und ruft die entsprechende Fensterprozedur auf. Nachrichten, die zwischen Threads gesendet werden, werden nur verarbeitet, wenn der empfangende Thread den Nachrichtenabrufcode ausführt. Der sendende Thread wird blockiert, bis der empfangende Thread die Nachricht verarbeitet. Der sendende Thread verarbeitet jedoch eingehende nicht abgefragte Nachrichten, während auf die Verarbeitung der Nachricht gewartet wird. Um dies zu verhindern, verwenden Sie SendMessageTimeout- mit SMTO_BLOCK Festgelegt. Weitere Informationen zu nicht queuierten Nachrichten finden Sie unter Nicht queuierte Nachrichten.

Eine Barrierefreiheitsanwendung kann SendMessage- verwenden, um WM_APPCOMMAND Nachrichten an die Shell zu senden, um Anwendungen zu starten. Diese Funktionalität ist nicht garantiert für andere Anwendungstypen geeignet.

Beispiele

Ein Beispiel finden Sie unter Anzeigen von Tastatureingaben.

Anmerkung

Der winuser.h-Header definiert SendMessage als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- winuser.h (enthalten Windows.h)
Library User32.lib
DLL- User32.dll
API-Satz ext-ms-win-ntuser-message-l1-1-0 (eingeführt in Windows 8)

Siehe auch

Konzeptionelle

InSendMessage-

Nachrichten- und Nachrichtenwarteschlangen

PostMessage-

PostThreadMessage-

Referenz-

RegisterWindowMessage

SendDlgItemMessage-

SendMessageCallback-

SendMessageTimeout-

SendNotifyMessage-