怎么样实现两个进程间通讯,在C++中!

hdp4820 2004-03-25 10:44:50
就是另一个进程要调用这个进程中的数据,在这个进程关闭之前要完成.
怎么去通知那个进程这边已经准备好了.可以来读数据了.
我知道用sendmessage.但是怎么用就不知道了.两个进程都是C++做的小程序.
...全文
308 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
baojian88888 2004-03-25
  • 打赏
  • 举报
回复
方法有很多

简单的可以用 WM_COPYDATA 消息,查 MSDN
Darkay_Lee 2004-03-25
  • 打赏
  • 举报
回复
就是管道,共享内存等方法
Darkay_Lee 2004-03-25
  • 打赏
  • 举报
回复
应该IPC才对,.^_^。
Darkay_Lee 2004-03-25
  • 打赏
  • 举报
回复
RPC的许多方法都可以。甚至可以建立一个TCP连接也是可以的,.^_^。
icenl 2004-03-25
  • 打赏
  • 举报
回复
up
autoegg 2004-03-25
  • 打赏
  • 举报
回复
学习学习,呵呵
wxdvc 2004-03-25
  • 打赏
  • 举报
回复
发送方:
void __fastcall WXD1::Func()
{
COPYDATASTRUCT cds;
cds.dwData=sizeof(COPYDATASTRUCT);
cds.cbData=Data.Length();
cds.lpData=(LPVOID)Data.c_str();
HWND hWnd=::FindWindow(NULL,"title");
if(hWnd) ::SendMessage(hWnd,WM_COPYDATA,NULL,(LPARAM)&cds);

}

接收方:

void __fastcall WXD2::WndProc(TMessag &Message)

{

if(Message.Msg==WM_COPYDATA)

{

COPYDATASTRUCT *cds;

char* DataBuf;

cds=(COPYDATASTRUCT*)Message.LParam;
.
.
.


}

WXD2::WndProc(Message);

}









hdp4820 2004-03-25
  • 打赏
  • 举报
回复
//这是另一部分
//现在由于没办法通信,我只有用最原始的办法了 system(...)调用已经做好的那部分了。
//其实也就成了子进程的问题去了啦。呵呵。

#include<windows.h>
#include<iostream>
using namespace std;

#define TEST4 "d:\\hdp\\FileMap\\FM_test4\\Debug\\FM_test4.exe"
#define MAP_STR "This is xQuant test!"

void main()
{
HANDLE hFilemap=CreateFileMapping((HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, 100, "SHARE");

LPVOID pVoid=MapViewOfFile(hFilemap, FILE_MAP_ALL_ACCESS, 0, 0, 0);

memset(pVoid,0,100);
strcpy((char*)pVoid,MAP_STR);
char *str=(char*)pVoid;
cout<<"The Str Is:"<<str<<endl;
system(TEST4); //////就是这个玩意,已经编译好的exe。用它。不然还没等你
CloseHandle(hFilemap);///去用就已经释放完了,什么都没有了。只有在还没有
/////释放之前去用了。大家看有什么办法不?
if(!UnmapViewOfFile(pVoid))
cout<<"the Mapping Cannot Uninstall !"<<endl;
else
cout<<"The Mapping Uninstall !"<<endl;
}
hdp4820 2004-03-25
  • 打赏
  • 举报
回复
///这是一部分。

#include <iostream>
#include <windows.h>
using namespace std;

void main()
{

HANDLE hFilemap=OpenFileMapping(FILE_MAP_WRITE,FALSE,"SHARE");
if(!hFilemap)
{
cout<<"cannot find the File Map"<<endl;
return;
}

LPVOID pVoid=MapViewOfFile(hFilemap,FILE_MAP_ALL_ACCESS,0,0,0);
if(!pVoid)
{
cout<<"cannot find the Map View, Return!"<<endl;
return;
}

char* str=(char *)pVoid;
cout<<"The Mapping Str Is:"<<str<<endl;
}
wshcdr 2004-03-25
  • 打赏
  • 举报
回复
希望到源代码~~~

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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