电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

进程间通信之WM_COPYDATAVIP免费

进程间通信之WM_COPYDATA_第1页
1/10
进程间通信之WM_COPYDATA_第2页
2/10
进程间通信之WM_COPYDATA_第3页
3/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,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 事件中,来处理这条消息.由于中文编码是两个字节,所以传递中文时候字节长度要搞清楚. 代码中有适量的解释,大家请自己看吧. 用WM_COPYDATA 的前提: 1,知道接收消息进程的句柄。 2,接收消息进程重载了WM_COPYDATA 消息映射,能对其做出反应(否则不是发送端自作多情了?) 看过前提,的出结论:在自己写的两个进程间用WM_COPYDATA 再好不过。 下面 CODE 几行就说明了一切。 获得句柄的方法,最简单的方法就是使用FindWindow,找窗口类,或者名,如果你觉得这样不把握,那就利用SetProp个窗口做个记号....(不说这些,跑踢儿了都) OK,开始写发送端代码: HWND hWnd = FindWindow(NULL,"MyApp"); if(hWnd!=NULL) { COPYDATASTRUCT cpd; /*给 COPYDATASTRUCT 结构赋值*/ cpd.dw Data = 0; cpd.cbData = strlen("字符串"); cpd.lpData = (void*)"字符串"; ::SendMessage(hWnd,WM_COPYDATANULL,(LPARAM)&cpd);//发送! /*完事儿了!!*/ } 接...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

进程间通信之WM_COPYDATA

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部