向指定的收件人发送邮件。接收者可以是应用,可安装的驱动器,网络驱动器,系统级设备驱动器或这些系统组件的任何组合。 要在定义请求时接收附加信息,可使用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来终止其执行。
新闻热点
疑难解答