win32简单的实现进程间通信(传送文本数据)

来源:赵克立博客 分类: Win32 标签:C/C++Win32ApiWin32发布时间:2017-11-22 15:47:18最后更新:2017-11-23 09:45:20浏览:3337
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2017-11-23 09:45:20
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

进程之间通讯的几种方法:

在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯。常用的方法有

使用内存映射文件 

通过共享内存DLL共享内存 

使用SendMessage向另一进程发送WM_COPYDATA消息


比起前两种的复杂实现来,WM_COPYDATA消息无疑是一种经济实惠的一中方法.WM_COPYDATA消息的主要目的是允许在进程间传递只读数据。Windows在通过WM_COPYDATA消息传递期间,不提供继承同步方式。SDK文档推荐用户使用SendMessage函数,接受方在数据拷贝完成前不返回,这样发送方就不可能删除和修改数据:


用到的消息、结构、函数

这个函数的原型及其要用到的结构如下:

typedef struct tagCOPYDATASTRUCT{ 

    DWORD dwData;//用户定义数据 

    DWORD cbData;//数据大小 

    PVOID lpData;//指向数据的指针 

}COPYDATASTRUCT;


发送数据时的参数

SendMessage(hwnd,WM_COPYDATA,wParam,lParam); 

其中,WM_COPYDATA对应的十六进制数为0x004A

wParam建议设置为包含数据的窗口的句柄。lParam指向一个COPYDATASTRUCT的结构: 

发送数据

char copystr[] ="这里是要传送的文本" ;
CopyData.dwData = 1;//这个是自定义数据随意填
CopyData.cbData = strlen(copystr);//发送数据的大小
CopyData.lpData = (char*)copystr;//指向数据的指针
::SendMessage(g_pHwnd, WM_COPYDATA, 0, (LPARAM)&CopyData);



接收数据

接收数据要处理 WM_COPYDATA 消息,在这个消息里处理

COPYDATASTRUCT *pCopyData = (COPYDATASTRUCT*)lParam;
char *c=(char*)pCopyData->lpData;//这个就是要取的文本啦



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python