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,w Param,lParam); 其中,WM_COPYDATA 对应的十六进制数为 0x004A w Param 设置为包含数据的窗口的句柄
lParam 指向一个COPYDATASTRUCT 的结构: typedef struct tagCOPYDATASTRUCT{ DWORD dw Data;//用户定义数据 DWORD cbData;//数据大小 PVOID lpData;//指向数据的指针 }COPYDATASTRUCT; 该结构用来定义用户数据
具体过程如下: 首先,在发送方,用FindWindow 找到接受方的句柄,然后向接受方发送 WM_COPYDATA 消息
接受方在DefWndProc 事件中,来处理这条消息
由于中文编码是两个字节,所以传递中文时候字