Win8、Win10中不同进程间发送自定义消息失败

程序A程序B,其中程序A程序B发送自定义消息,在Win7、XP上都没有问题,但是在Win8、Win10中有些时候无法收到消息,导致调用失败。


经过一番测试,最终发现问题所在:

情景1: 用户账户控制中设置为从不通知                                               ===》    收发消息成功

情景2: 用户账户控制设置为其他除了从不通知的任意一个

2.1:程序A、程序B都以正常模式启动                                              ===》   收发消息成功

2.2:程序A以正常模式启动,程序B以管理员模式启动                  ===》   收发消息失败


解决办法:

1、发送消息的程序(程序A)的发送消息调用

void SendMessageTo(HWND hWnd)
{
	//将消息注册到系统
	const UINT myMsg = RegisterWindowMessage(_T("MYMESSAGE"));
	SendMessage(hWnd, myMsg, 0, 0);
}

2、在需要接收消息的程序( 程序B)的开始位置添调用

<span style="white-space:pre"></span><pre name="code" class="cpp">void InitMessage()
{
	//将消息注册到系统
	m_myMsg = RegisterWindowMessage(_T("MYMESSAGE"));
	//将m_myMsg消息加入白名单,不会因为权限被阻止
	ChangeWindowMessageFilter(m_myMsg, MSGFLT_ADD);
}

 

其中m_myMsg就是需要监视的消息


用户账户控制设置如下图:




  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值