共用方式為


BroadcastSystemMessageExA 函式 (winuser.h)

將訊息傳送給指定的收件者。 收件者可以是應用程式、可安裝驅動程式、網路驅動程式、系統層級設備驅動器,或這些系統元件的任何組合。

此函式類似於 BroadcastSystemMessage,不同之處在於此函式可以從收件者傳回更多資訊。

語法

long BroadcastSystemMessageExA(
  [in]                DWORD    flags,
  [in, out, optional] LPDWORD  lpInfo,
  [in]                UINT     Msg,
  [in]                WPARAM   wParam,
  [in]                LPARAM   lParam,
  [out, optional]     PBSMINFO pbsmInfo
);

參數

[in] flags

類型:DWORD

廣播選項。 此參數可以是下列其中一或多個值。

價值 意義
BSF_ALLOWSFW
0x00000080
可讓收件者在處理郵件時設定前景視窗。
BSF_FLUSHDISK
0x00000004
在每個收件者處理郵件之後,排清磁碟。
BSF_FORCEIFHUNG
0x00000020
繼續廣播訊息,即使逾時期間過去或其中一個收件者沒有回應也一樣。
BSF_IGNORECURRENTTASK
0x00000002
不會將訊息傳送至屬於目前工作的視窗。 這可防止應用程式接收自己的訊息。
BSF_LUID
0x00000400
如果已設定 BSF_LUID,訊息就會傳送至與 luidBSMINFO 結構中所指定之 LUID 相同的視窗。

Windows 2000:不支援此旗標。

BSF_NOHANG
0x00000008
強制非回應應用程式逾時。如果其中一個收件者逾時,請勿繼續廣播郵件。
BSF_NOTIMEOUTIFNOTHUNG
0x00000040
只要收件者沒有回應,就等候訊息的回應。 不會逾時。
BSF_POSTMESSAGE
0x00000010
張貼訊息。 請勿與 BSF_QUERY搭配使用。
BSF_RETURNHDESK
0x00000200
如果拒絕存取,而且已設定此和 BSF_QUERYBSMINFO 會同時傳回桌面句柄和視窗句柄。 如果拒絕存取,且只設定 BSF_QUERY,則只有 BSMINFO傳回視窗句柄。

Windows 2000:不支援此旗標。

BSF_QUERY
0x00000001
一次傳送郵件給一個收件者,只有在目前的收件者傳回 TRUE 時,才會傳送給後續收件者。
BSF_SENDNOTIFYMESSAGE
0x00000100
使用 SendNotifyMessage 函式 傳送訊息。 請勿與 BSF_QUERY搭配使用。

[in, out, optional] lpInfo

類型:LPDWORD

包含和接收郵件收件者相關信息之變數的指標。

當函式傳回時,此變數會接收這些值的組合,以識別哪些收件者實際收到郵件。

如果此參數 NULL,則函式會廣播至所有元件。

此參數可以是下列其中一或多個值。

價值 意義
BSM_ALLCOMPONENTS
0x00000000
廣播至所有系統元件。
BSM_ALLDESKTOPS
0x00000010
廣播到所有桌面。 需要 SE_TCB_NAME 許可權。
BSM_APPLICATIONS
0x00000008
廣播至應用程式。

[in] Msg

類型:UINT

要傳送的訊息。

如需系統提供的訊息清單,請參閱 System-Defined 訊息

[in] wParam

類型:WPARAM

其他訊息特定資訊。

[in] lParam

類型:LPARAM

其他訊息特定資訊。

[out, optional] pbsmInfo

類型:PBSMINFO

BSMINFO 結構的指標,如果要求遭到拒絕,且 dwFlags 設定為 BSF_QUERY,則包含其他資訊的指標。

傳回值

類型:

如果函式成功,傳回值會是正值。

如果函式無法廣播訊息,傳回值為 –1。

如果 dwFlags 參數為 BSF_QUERY,且至少傳回一個收件者 BROADCAST_QUERY_DENY 對應郵件,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

言論

如果未指定 BSF_QUERY,函式會將指定的郵件傳送給所有要求的收件者,忽略這些收件者傳回的值。

如果呼叫端的線程位於拒絕要求的視窗以外的桌面上,呼叫端必須呼叫 SetThreadDesktop(hdesk),才能查詢該視窗上的任何專案。 此外,呼叫端必須在 傳回的 hdesk 句柄上呼叫 closeDesktop

系統只會對系統訊息進行封送處理(範圍 0 到 (WM_USER-1) 中的訊息。 若要將其他訊息 (這些 >= WM_USER) 傳送至另一個進程,您必須執行自定義封送處理。

注意

winuser.h 標頭會將 BroadcastSystemMessageEx 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
支援的最低伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平臺 窗戶
標頭 winuser.h (包括 Windows.h)
連結庫 User32.lib
DLL User32.dll

另請參閱

BSMINFO

BroadcastSystemMessage

概念

訊息和消息佇列

參考

SendNotifyMessage