5469|5

66

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

使用PostThreadMessage在进程间传递消息的疑惑 [复制链接]

在《multithreading applications in Win32》这本书中看到,可以使用PostThreadMessage函数把消息发给另一个进程,但是我在wince环境的实际使用过程中却发现没有效果。
代码如下:
//进程base.exe创建进程son.exe
PROCESS_INFORMATION pi;
CreateProcess(_T("son.exe"), NULL, NULL, NULL,
    FALSE, 0, NULL, NULL, NULL, &pi);
//做些其它事
……
//希望使用PostThreadMessage关闭进程son.exe
//但是son.exe并没有关闭
//然而如果使用WM_QUIT消息是可以关闭son.exe的
PostThreadMessage(pi.dwThreadId, WM_DESTROY, 0, 0);

问题就是使用WM_DESTROY或WM_CLOSE为什么不能关闭son.exe?
另外使用PostMessage函数可以关闭son.exe
代码如下:
//son为son.exe的标题
HWND hWnd = FindWindow(0, _T("son"));
PostMessage(hWnd, WM_DESTROY, 0, 0);

希望哪位高手可以帮我解答。

最新回复

多谢了,看来我是走入误区了,将消息与窗口消息搞混了  详情 回复 发表于 2007-8-31 19:19
点赞 关注

回复
举报

88

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
WM_DESTROY或WM_CLOSE消息应该是发给窗口的,但是PostThreadMessage函数不能给窗口发消息,应该用PostMessage函数。
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
PostThreadMessage是给线程发消息,你要销毁窗口直接使用DestroyWindow就行了
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

4
 
WM_DESTROY 要注册的 不要跟已有的冲突

在发送消息地方注册:
UINT WM_MY_DESTROY = ::RegisterWindowMessage(_T("testClose"));

接收消息的窗口 注册:
UINT WM_MY_DESTROY = ::RegisterWindowMessage(_T("testClose"));
ON_REGISTERED_MESSAGE(WM_MY_DESTROY , OnDealWithMyDestroy);

 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
PostThreadMessage(hWnd, WM_MY_DESTROY, 0, 0);//hWnd 这个要保证有效的
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
多谢了,看来我是走入误区了,将消息与窗口消息搞混了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表