社区
VC.NET
帖子详情
用::SendMessage在两个程序间通讯,但是收发内容不相同
金色熊族
2016-03-12 10:50:52
我写了两个程序。第一个程序的窗体起名叫Rcv。第二个程序用::FindWindow函数寻找名为"Rcv"的窗体的句柄。然后用::SendMessage向第一个程序发送三个字节的数据,内容是123.消息的wp参数是这段数据的首地址,lp是数据长度,即3。在Rcv确实能收到消息,而且接收到的地址也和发送端的地址值一致.但是里面内容是三个零。见插图。请问应该怎样才能把数据正确在窗体间传递?
以及发送方的代码:
...全文
1748
5
打赏
收藏
用::SendMessage在两个程序间通讯,但是收发内容不相同
我写了两个程序。第一个程序的窗体起名叫Rcv。第二个程序用::FindWindow函数寻找名为"Rcv"的窗体的句柄。然后用::SendMessage向第一个程序发送三个字节的数据,内容是123.消息的wp参数是这段数据的首地址,lp是数据长度,即3。在Rcv确实能收到消息,而且接收到的地址也和发送端的地址值一致.但是里面内容是三个零。见插图。请问应该怎样才能把数据正确在窗体间传递? 以及发送方的代码:
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
金色熊族
2016-11-12
打赏
举报
回复
以解决,进程间通讯用wm_copydata,不能用自定义的wm_snd
test2002
2016-11-12
打赏
举报
回复
WM_SND是什么消息,自定义消息吗
示申○言舌
2016-09-01
打赏
举报
回复
这是一个多么显而易见的问题。《windows核心编程》没好好看吧,呵呵。每个进程都有独立的4G私有空间,你的数据在A进程的内存空间里,你把地址发到B进程,对于B进程而言,虽然收到了那个地址,但那个地址对于B进程没有意义。。。 要想实现,办法有很多种: 1、使用内核对象,比如使用内存文件映射,两个进程都打开同一个内存文件映射对象,数据就能共享了。这是一种比较简单的方法。 2、使用DLL共享数据。 3、在A进程中,发送数据之前,使用AllocEx在B进程中远程申请内存,将数据放到B进程的空间里,然后告诉B进程数据在哪里。 。。。。。。。
用户 昵称
2016-04-25
打赏
举报
回复
copydata要你自己申请空间的,这就是关键。
金色熊族
2016-03-12
打赏
举报
回复
用WM_COPYDATA把问题解决了,详见http://www.cnblogs.com/xiekeli/p/3994380.html
内存拷贝(
SendMessage
)在C#、C++、QT之
间
的互相
通讯
实现
内存拷贝(
SendMessage
)在C#、C++、QT之
间
的互相
通讯
实现
windows下进程
间
通信的(13种方法)
转自:http://blog.csdn.NET/shiqz/article/details/5862936 摘 要 随着人们对应用
程序
的要求越来越高,单进程应用在许多场合已不能满足人们的要求。编写多进程/多线程
程序
成为现代
程序
设计的一个重要特点,在多进程
程序
设计中,进程
间
的通信是不可避免的。Microsoft Win32 API提供了多种进程
间
通信的方法,全面地阐述了这些方法的特点,并加以比
进程
间
通讯
方式总结
一、linux系统进程
间
通信的方式: 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程
间
使用。进程的亲缘关系通常是指父子进程关系。 命名管道 (named pipe): 命名管道也是半双工的通信方式,但是它允许无亲缘关系进程
间
的通信。 信号量( semophore ): 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机
windows进程
通讯
方式
因为WM_COPYDATA消息是将A进程的数据拷贝一份并发送给B进程的,之后B进程操作的是自己的一份拷贝,和A进程的数据无关。3.数据大小限制:
SendMessage
函数发送的数据大小不能超过 WPARAM 类型的数据大小,即 32 位系统下最大只能传输 4 字节的数据,64 位系统下最大只能传输 8 字节的数据。2.性能问题:WM_COPYDATA 消息需要进行两次内存拷贝,一次是从发送进程的地址空
间
复制数据到内核缓冲区,另一次是从内核缓冲区复制数据到接收进程的地址空
间
,这可能会影响系统性能。
应用
程序
间
通信
孙鑫VC 17集 进程
间
通信 VC++实现串口通信的应用
程序
设计 http://blog.csdn.net/jax_lee/article/details/6764408 一个主应用
程序
调用另一个应用
程序
后, 要保持它们之
间
的数据交换, 如何实现? 相对来说,内存共享灵活性较大,消息传递实现简单 这种问题问得太多了
VC.NET
7,539
社区成员
27,670
社区内容
发帖
与我相关
我的任务
VC.NET
.NET技术 VC.NET
复制链接
扫一扫
分享
社区描述
.NET技术 VC.NET
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章