BroadcastSystemMessageExA-Funktion (winuser.h)
Sendet eine Nachricht an die angegebenen Empfänger. Die Empfänger können Anwendungen, installierbare Treiber, Netzwerktreiber, Gerätetreiber auf Systemebene oder eine beliebige Kombination dieser Systemkomponenten sein.
Diese Funktion ähnelt BroadcastSystemMessage- mit der Ausnahme, dass diese Funktion weitere Informationen von den Empfängern zurückgeben kann.
Syntax
long BroadcastSystemMessageExA(
[in] DWORD flags,
[in, out, optional] LPDWORD lpInfo,
[in] UINT Msg,
[in] WPARAM wParam,
[in] LPARAM lParam,
[out, optional] PBSMINFO pbsmInfo
);
Parameter
[in] flags
Typ: DWORD-
Die Übertragungsoption. Dieser Parameter kann einen oder mehrere der folgenden Werte sein.
Wert | Bedeutung |
---|---|
|
Ermöglicht es dem Empfänger, das Vordergrundfenster während der Verarbeitung der Nachricht festzulegen. |
|
Löscht den Datenträger, nachdem jeder Empfänger die Nachricht verarbeitet hat. |
|
Die Nachricht wird weiterhin übertragen, auch wenn der Timeoutzeitraum verstrichen ist oder einer der Empfänger nicht reagiert. |
|
Sendet die Nachricht nicht an Fenster, die zur aktuellen Aufgabe gehören. Dadurch wird verhindert, dass eine Anwendung eine eigene Nachricht empfängt. |
|
Wenn BSF_LUID festgelegt ist, wird die Nachricht an das Fenster gesendet, das dieselbe LUID wie im luid Member der BSMINFO Struktur angegeben hat.
Windows 2000: Dieses Flag wird nicht unterstützt. |
|
Erzwingt eine nicht reagierende Anwendung zum Timeout. Wenn einer der Empfänger ausgeht, führen Sie die Übertragung der Nachricht nicht fort. |
|
Wartet auf eine Antwort auf die Nachricht, solange der Empfänger nicht reagiert. Timeout nicht. |
|
Veröffentlicht die Nachricht. Verwenden Sie nicht in Kombination mit BSF_QUERY. |
|
Wenn der Zugriff verweigert wird und sowohl diese als auch BSF_QUERY festgelegt sind, gibt BSMINFO sowohl das Desktophandle als auch das Fensterhandle zurück. Wenn der Zugriff verweigert wird und nur BSF_QUERY festgelegt ist, wird nur das Fensterhandle von BSMINFOzurückgegeben.
Windows 2000: Dieses Flag wird nicht unterstützt. |
|
Sendet die Nachricht gleichzeitig an einen Empfänger, der nur dann an einen nachfolgenden Empfänger gesendet wird, wenn der aktuelle Empfänger TRUEzurückgibt. |
|
Sendet die Nachricht mithilfe SendNotifyMessage--Funktion. Verwenden Sie nicht in Kombination mit BSF_QUERY. |
[in, out, optional] lpInfo
Typ: LPDWORD-
Ein Zeiger auf eine Variable, die Informationen zu den Empfängern der Nachricht enthält und empfängt.
Wenn die Funktion zurückgegeben wird, empfängt diese Variable eine Kombination dieser Werte, die bestimmen, welche Empfänger die Nachricht tatsächlich erhalten haben.
Wenn dieser Parameter NULL-ist, wird die Funktion an alle Komponenten übertragen.
Dieser Parameter kann einen oder mehrere der folgenden Werte sein.
Wert | Bedeutung |
---|---|
|
Übertragen an alle Systemkomponenten. |
|
Übertragen auf alle Desktops. Erfordert die SE_TCB_NAME Berechtigung. |
|
Übertragen auf Anwendungen. |
[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.
[out, optional] pbsmInfo
Typ: PBSMINFO-
Ein Zeiger auf eine BSMINFO- Struktur, die zusätzliche Informationen enthält, wenn die Anforderung verweigert wird und dwFlags auf BSF_QUERYfestgelegt ist.
Rückgabewert
Typ: lange
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein positiver Wert.
Wenn die Funktion die Nachricht nicht übertragen kann, lautet der Rückgabewert –1.
Wenn der dwFlags Parameter BSF_QUERY ist und mindestens ein Empfänger BROADCAST_QUERY_DENY an die entsprechende Nachricht zurückgegeben hat, ist der Rückgabewert null. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.
Bemerkungen
Wenn BSF_QUERY nicht angegeben ist, sendet die Funktion die angegebene Nachricht an alle angeforderten Empfänger, wobei werte ignoriert werden, die von diesen Empfängern zurückgegeben werden.
Wenn sich der Thread des Aufrufers auf einem anderen Desktop als dem fenster befindet, das die Anforderung verweigert hat, muss der Aufrufer SetThreadDesktop(hdesk) aufrufen, um etwas in diesem Fenster abzufragen. Außerdem muss der Anrufer CloseDesktop- für das zurückgegebene hdesk- Handle aufrufen.
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.
Anmerkung
Der winuser.h-Header definiert BroadcastSystemMessageEx 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 XP [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows Server 2003 [Nur Desktop-Apps] |
Zielplattform- | Fenster |
Header- | winuser.h (enthalten Windows.h) |
Library | User32.lib |
DLL- | User32.dll |
Siehe auch
Konzeptionelle
Nachrichten- und Nachrichtenwarteschlangen
Referenz-