BroadcastSystemMessage函数详解

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来终止其执行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值