SendMessageTimeoutA-Funktion (winuser.h)

Sendet die angegebene Nachricht an mindestens ein Fenster.

Syntax

LRESULT SendMessageTimeoutA(
  [in]            HWND       hWnd,
  [in]            UINT       Msg,
  [in]            WPARAM     wParam,
  [in]            LPARAM     lParam,
  [in]            UINT       fuFlags,
  [in]            UINT       uTimeout,
  [out, optional] PDWORD_PTR lpdwResult
);

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 zugeordneter Fenster. Die Funktion wird erst zurückgegeben, wenn für jedes Fenster ein Timeout aufgetreten ist. Daher kann die Gesamtwartezeit bis zum Wert von uTimeout multipliziert mit der Anzahl der Fenster der obersten Ebene liegen.

[in] Msg

Typ: UINT

Die zu sendende Nachricht.

Listen der vom System bereitgestellten Nachrichten finden Sie unter Systemdefinierte Nachrichten.

[in] wParam

Typ: WPARAM

Alle zusätzlichen nachrichtenspezifischen Informationen.

[in] lParam

Typ: LPARAM

Alle zusätzlichen nachrichtenspezifischen Informationen.

[in] fuFlags

Typ: UINT

Das Verhalten dieser Funktion. Dieser Parameter kann einen oder mehrere der folgenden Werte aufweisen.

Wert Bedeutung
SMTO_ABORTIFHUNG
0x0002
Die Funktion gibt zurück, ohne darauf zu warten, dass der Timeoutzeitraum verstrichen ist, wenn der empfangende Thread scheinbar nicht reagiert oder "hängt".
SMTO_BLOCK
0x0001
Verhindert, dass der aufrufende Thread andere Anforderungen verarbeitet, bis die Funktion zurückgegeben wird.
SMTO_NORMAL
0x0000
Der aufrufende Thread wird nicht daran gehindert, andere Anforderungen zu verarbeiten, während er auf die Rückgabe der Funktion wartet.
SMTO_NOTIMEOUTIFNOTHUNG
0x0008
Die Funktion erzwingt den Timeoutzeitraum nicht, solange der empfangende Thread Nachrichten verarbeitet.
SMTO_ERRORONEXIT
0x0020
Die Funktion sollte 0 zurückgeben, wenn das empfangende Fenster während der Verarbeitung der Nachricht zerstört wird oder der eigene Thread stirbt.

[in] uTimeout

Typ: UINT

Die Dauer des Timeoutzeitraums in Millisekunden. Wenn es sich bei der Nachricht um eine Broadcastnachricht handelt, kann jedes Fenster den vollständigen Timeoutzeitraum verwenden. Wenn Sie beispielsweise einen Timeoutzeitraum von fünf Sekunden angeben und es drei Fenster der obersten Ebene gibt, die die Nachricht nicht verarbeiten können, kann es zu einer Verzögerung von bis zu 15 Sekunden kommen.

[out, optional] lpdwResult

Typ: PDWORD_PTR

Das Ergebnis der Nachrichtenverarbeitung. Der Wert dieses Parameters hängt von der angegebenen Nachricht ab.

Rückgabewert

Typ: LRESULT

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null. SendMessageTimeout stellt keine Informationen zu einzelnen Fenstern bereit, wenn HWND_BROADCAST verwendet wird.

Wenn die Funktion fehlschlägt oder ein Zeitüberschreitung auftritt, ist der Rückgabewert 0. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf. Wenn GetLastErrorERROR_TIMEOUT zurückgibt, wird für die Funktion ein Timeout ausgeführt.

Windows 2000: Wenn GetLastError 0 zurückgibt, ist für die Funktion ein Timeout festgelegt.

Hinweise

Die Funktion ruft die Fensterprozedur für das angegebene Fenster auf. Wenn das angegebene Fenster zu einem anderen Thread gehört, wird erst zurückgegeben, wenn die Fensterprozedur die Nachricht verarbeitet hat oder der angegebene Timeoutzeitraum abgelaufen ist. Wenn das Fenster, das die Nachricht empfängt, zur gleichen Warteschlange gehört wie der aktuelle Thread, wird die Fensterprozedur direkt aufgerufen– der Timeoutwert wird ignoriert.

Diese Funktion berücksichtigt, dass ein Thread nicht reagiert, wenn er nicht innerhalb von fünf Sekunden GetMessage oder eine ähnliche Funktion aufgerufen hat.

Das System führt nur Marshalling für Systemmeldungen durch (solche im Bereich von 0 bis (WM_USER-1)). Um andere Nachrichten (diese >= WM_USER) an einen anderen Prozess zu senden, müssen Sie benutzerdefiniertes Marshalling durchführen.

Hinweis

Der winuser.h-Header definiert SendMessageTimeout 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 nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile winuser.h (einschließlich Windows.h)
Bibliothek User32.lib
DLL User32.dll
APIs ext-ms-win-ntuser-message-l1-1-0 (in Windows 8 eingeführt)

Siehe auch

Konzept

GetMessage

InSendMessage

Nachrichten und Nachrichtenwarteschlangen

PostMessage

Referenz

SendDlgItemMessage

SendMessage

SendMessageCallback

SendNotifyMessage