向指定的收件人發送郵件。接收者可以是應用,可安裝的驅動器,網絡驅動器,系統級設備驅動器或這些系統組件的任何組合。 要在定義請求時接收附加信息,可使用BroadcastSystemMessageEx函數
long WINAPI BroadcastSystemMessage( _In_ DWord dwFlags, _Inout_opt_ LPDWORD lpdwRecipients, _In_ UINT uiMessage, _In_ WPARAM wParam, _In_ LPARAM lParam);參數 dwFlags [in] 類型:DWORD 廣播選項。此參數可以是以下一個或多個值。
BSF_ALLOWSFW 0x00000080 使接收方在處理消息時設置前臺窗口。
BSF_FLUSHDISK 0x00000004 每個收件人處理郵件后刷新磁盤。
BSF_FORCEIFHUNG 0x00000020 繼續廣播消息,即使超時時間過去或收件人之一沒有響應。
BSF_IGNORECURRENTTASK 0x00000002 不將消息發送到屬于當前任務的窗口。這防止應用程序接收其自己的消息。
BSF_NOHANG 0x00000008 強制非響應應用程序超時。如果其中一個收件人超時,請不要繼續廣播該郵件。
BSF_NOTIMEOUTIFNOTHUNG 0x00000040 等待對消息的響應,只要接收者沒有反應。不超時。
BSF_POSTMESSAGE 0x00000010 張貼訊息。不要與BSF_QUERY結合使用。
BSF_QUERY 0x00000001 一次將郵件發送到一個收件人,只有當前收件人返回TRUE時才發送給后續收件人。
BSF_SENDNOTIFYMESSAGE 0x00000100 使用SendNotifyMessage函數發送消息。不要與BSF_QUERY結合使用。
lpdwRecipients [in,out,optional] 類型:LPDWORD 指向包含和接收有關消息的收件人的信息的變量的指針。 當函數返回時,此變量接收這些值的組合,標識哪些收件人實際接收到該消息。 如果此參數為NULL,則函數將廣播到所有組件。 此參數可以是以下一個或多個值。
BSM_ALLCOMPONENTS 0x00000000 廣播到所有系統組件。
BSM_ALLDESKTOPS 0x00000010 廣播到所有桌面。需要SE_TCB_NAME權限。
BSM_applicationS 0x00000008 廣播到應用程序。
uiMessage [in] 類型:UINT 要發送的消息。 有關系統提供的消息的列表,請參閱系統定義的消息。 wParam [in] 類型:WPARAM 其他消息特定信息。 lParam [in] 類型:LPARAM 其他消息特定信息。
返回值 類型: 類型:long 如果函數成功,返回值為正值。 如果函數無法廣播消息,則返回值為-1。 如果dwFlags中參數是BSF_QUERY和至少一個接收者返回BROADCAST_QUERY_DENY到相應的消息,該返回值是零。要獲取擴展錯誤信息,請調用GetLastError。 備注 如果BSF_QUERY沒有指定,函數發送指定的消息給所有要求收件人,無視這些收件人返回的值。 系統僅對系統消息(范圍為0到(WM_USER -1)的系統消息進行編組。要將其他消息(那些> = WM_USER)發送到另一個進程,您必須執行自定義編組。
示例: 一個進程可以通過使用BroadcastSystemMessage函數廣播私人消息來終止其他進程 ,如下所示:
DWORD dwRecipients = BSM_APPLICATIONS; UINT uMessage = PM_MYMSG; WPARAM wParam = 0; LPARAM lParam = 0; BroadcastSystemMessage( BSF_IGNORECURRENTTASK,//不向此進程發送消息 &dwRecipients,//僅廣播到應用程序 uMessage,//注冊的私人消息 wParam,//消息特定值 lParam); //消息特定值接收專用消息的進程調用 ExitPRocess來終止其執行。
新聞熱點
疑難解答