首页 > 学院 > 开发设计 > 正文

BroadcastSystemMessage函数详解

2019-11-06 06:14:29
字体:
来源:转载
供稿:网友

BroadcastSystemMessage函数

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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表