下载此文档

进程间通信之wm-copydata.doc


文档分类:通信/电子 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
VC++ 中WM_COPYDATA 怎么样应用来实现两个进程间的数据传输
VC++ 2010-03-22 16:05:19 阅读23 评论0 字号:大中小
本文着重讲述了如果用WM_COPYDATA消息来实现两个进程之间传递数据.
进程之间通讯的几种方法:
在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。常用的方法有
  使用内存映射文件
  通过共享内存DLL共享内存
  使用SendMessage向另一进程发送WM_COPYDATA消息
比起前两种的复杂实现来,WM_COPYDATA消息无疑是一种经济实惠的一中方法.
WM_COPYDATA消息的主要目的是允许在进程间传递只读数据。Windows在通过WM_COPYDATA消息传递期间,不提供继承同步方式。SDK文档推荐用户使用SendMessage函数,接受方在数据拷贝完成前不返回,这样发送方就不可能删除和修改数据:
这个函数的原型及其要用到的结构如下:
SendMessage(hwnd,WM_COPYDATA,wParam,lParam);
其中,WM_COPYDATA对应的十六进制数为0x004A
wParam设置为包含数据的窗口的句柄。lParam指向一个COPYDATASTRUCT的结构:
typedef struct tagCOPYDATASTRUCT{
    DWORD dwData;//用户定义数据
    DWORD cbData;//数据大小
    PVOID lpData;//指向数据的指针
}COPYDATASTRUCT;
该结构用来定义用户数据。
具体过程如下:
首先,在发送方,用FindWindow找到接受方的句柄,然后向接受方发送WM_COPYDATA消息.
接受方在DefWndProc事件中,,所以传递中文时候字节长度要搞清楚.
代码中有适量的解释,大家请自己看吧.
用WM_COPYDATA的前提:
1,知道接收消息进程的句柄。
2,接收消息进程重载了WM_COPYDATA消息映射,能对其做出反应(否则不是发送端自作多情了?)
看过前提,的出结论:在自己写的两个进程间用WM_COPYDATA再好不过。
下面CODE几行就说明了一切。
获得句柄的方法,最简单的方法就是使用FindWindow,找窗口类,或者名,如果你觉得这样不把握,那就利用SetProp个窗口做个记号....(不说这些,跑踢儿了都)
OK,开始写发送端代码:
HWND hWnd = FindWindow(NULL,"MyApp");
if(hWnd!=NULL)
{
      COPYDATASTRUCT cpd; /*给COPYDATASTRUCT结构赋值*/
      = 0;
      = strlen("字符串");
      = (void*)"字符串";
      ::SendMessage(hWnd,WM_COPYDATANULL,(LPARAM)&cpd);//发送!
      /*完事儿了!!*/
}
接收端重载ON_WM_

进程间通信之wm-copydata 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人iris028
  • 文件大小61 KB
  • 时间2020-11-24