PostMessage函数和SendMessage函数的使用

 这两个函数可以用于不同应用程序之间互发消息, PostMessage 函数是把一个消息放到其他程序等的消息队列中,目标程序收到了这条消息就把它放入该程序的消息队列中去处理;而SendMessage函数则越过消息队列直接调用目标程序的窗口过程,窗口过程返回后才从SendMessage函数中返回。

    而另外一段文字描述是这样:当程序A调用SendMessage函数的时候,windows会先保存wParam和lParam参数并等待,等轮到程序B的时间片的时候再去调用它的窗口过程,并把保存的wParam和lParam参数发给它,等窗口过程返回的时候,windows记下返回值并等待,再等轮到程序1的时间片的时候把返回值当做SendMessage的返回值传给程序A,这样程序A看上汽就像自己直接在调用程序B的窗口过程一样。        上述两段文字的描述,说明假如当前程序A调用SendMessage函数,则除非等到程序B处理了由程序A发送给它的消息,否则SendMessage函数将不返回,因此程序A将陷入SendMessage函数中,那么在Windows分配给程序A的20ms时间片中,程序A将不能做任何其他事情!如果这样理解正确那么使用SendMessage函数使得程序A的运行效率很慢!那么,加入我们要在不同程序之间发送消息,假如我们并不想让用户察觉到该过程,则使用PostMessage函数将更好的隐藏我们自身的程序。

     此外,向程序B发送WM_SETTEXT或者WM_COPYDATA消息时,如果使用PostMessage函数,则程序B根本不会接受到这两个消息。事实上,当消息参数中用到指针时,用PostMessage函数来发送消息都不会成功。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值