用::SendMessage在两个程序间通讯,但是收发内容不相同

金色熊族 2016-03-12 10:50:52
我写了两个程序。第一个程序的窗体起名叫Rcv。第二个程序用::FindWindow函数寻找名为"Rcv"的窗体的句柄。然后用::SendMessage向第一个程序发送三个字节的数据,内容是123.消息的wp参数是这段数据的首地址,lp是数据长度,即3。在Rcv确实能收到消息,而且接收到的地址也和发送端的地址值一致.但是里面内容是三个零。见插图。请问应该怎样才能把数据正确在窗体间传递?


以及发送方的代码:
...全文
1748 5 打赏 收藏 转发到动态 举报
写回复
用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

7,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 VC.NET
社区管理员
  • VC.NET社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧