怎样实现两个不同程序间的通讯?高分求!!!

byry 2003-11-12 09:47:52
我希望从一个程序发送一段字符串到另一个程序中,并且能触发第二个程序的某个事件,

请问在发送程序的一端该怎么设计?

在接收程序的一端该怎么设计?

需要用到哪些消息函数?怎么设计程序之间的接口?
...全文
68 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
smartwind 2003-11-12
  • 打赏
  • 举报
回复
如果是两个程序间的本地通信的话
是不是可以考虑使用消息传递实现?
在需要通信的进程中
分别RegisterWindowMessage()
然后使用PostMessage(HWND_BROADCAST, 消息, WPARAM, LPARAM)
发送相应的消息
nonocast 2003-11-12
  • 打赏
  • 举报
回复
内存映射
看一下Advanced Windows
我发了
gjgj3368 2003-11-12
  • 打赏
  • 举报
回复
学习
感谢并支持楼主!
byry 2003-11-12
  • 打赏
  • 举报
回复
谢谢大兄弟们,我的MAIL:pepsibyry@163.com
neuboy 2003-11-12
  • 打赏
  • 举报
回复
共享内存,

管道

LPC RPC
flinming 2003-11-12
  • 打赏
  • 举报
回复
通过命令行。。。
dzqsuper 2003-11-12
  • 打赏
  • 举报
回复
楼主我给你个例子怎么样
给你的E-mail
vcforever 2003-11-12
  • 打赏
  • 举报
回复
用共享内存的方法比较实用
http://www.vckbase.com/code/listcode.asp?mclsid=13&sclsid=1305&page=2
spwnihao 2003-11-12
  • 打赏
  • 举报
回复
[转]
利用内存映射文件进行文件I/O操作,一般需要下面几个步骤:

1.调用CreateFile()函数,以适当的方式创建或打开一个文件核心对象
2.把CreateFile()函数返回的文件句柄作为参数,传给CreateFileMapping()函数,由CreateFileMapping()
函数创建一个文件映射核心对象的适当属性;
3.创建了文件映射核心对象后,调用MapViewOfFile()函数,告诉系统把文件的哪一部分映射到进程的地址空间中,
以何种方式映射
4.利用MapViewOfFile()函数返回的指针来使用文件数据
5.操作完毕后,调用UnmapViewOfFile()函数,告诉系统撤销对文件映射核心对象的映射
6.使用CloseHandle()函数关闭文件映射核心对象
7.使用CloseHandle()函数关闭文件核心对象


第一个进程调用CreateFileMapping来创建一个文件映射对象并赋予MyFileMappingObject名称。使用
PAGE_READWRITE标志,进程通过任何被创建的文件视图将有到该内存的读/写权限.

注意ErrorHandler是一个用户定义函数的占位符来显示错误信息和退出代码.

HANDLE hMapFile;

hMapFile = CreateFileMapping(hFile, //当前文件句柄
NULL, //缺省安全属性
PAGE_READWRITE, //读/写权限
0, //文件映射对象的最大尺寸的高字节
0, //文件映射对象的最大尺寸的低字节
"MyFileMappingObject"); //映射对象的名称

if (hMapFile == NULL)
{
ErrorHandler("Could not create file mapping object.");
}
进程然后在MapViewOfFile中使用由CreateFileMapping返回的文件映射对象去创建一个文件视图。
MapViewOfFile函数返回指向文件视图的指针.

LPVOID lpMapAddress;
lpMapAddress = MapViewOfFile(hMapFile, //映射对象句柄
FILE_MAP_ALL_ACCESS, //读/写权限
0, //文件映射开始位置偏移量的高字节
0, //文件映射开始位置偏移量的低字节
0); //映射整个文件

if (lpMapAddress == NULL)
{
ErrorHandler("Could not map view of file.");
}

第二个进程使用MyFileMappingObject名称调用OpenFileMapping函数来使用由第一个进程创建的同一个文件映射对象,
第二个进程使用MapViewOfFile函数得到指向文件视图的指针.

HANDLE hMapFile;
LPVOID lpMapAddress;

hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, //读/写权限
FALSE, //不要继承该名字
"MyFileMappingObject"); //映射对象名称

if (hMapFile == NULL)
{
ErrorHandler("Could not open file mapping object.");
}

lpMapAddress = MapViewOfFile(hMapFile, //映射对象句柄
FILE_MAP_ALL_ACCESS, //读/写权限
0, //文件映射开始位置偏移量的高字节
0, //文件映射开始位置偏移量的低字节
0); //映射整个文件

if (lpMapAddress == NULL)
{
ErrorHandler("Could not map view of file.");
}
flyelf 2003-11-12
  • 打赏
  • 举报
回复
进程间通讯的方法还是比较多的,如使用共享内存,管道或者用socket都可以,网上这些例子很多,搜索一下就能得到一大堆
topwork 2003-11-12
  • 打赏
  • 举报
回复
请参阅这里http://expert.csdn.net/Expert/topic/2449/2449427.xml?temp=.1552088
我昨天刚写了个例子,你要么?
byry 2003-11-12
  • 打赏
  • 举报
回复
to: dzqsuper(数风流人物-还看CSDN(丁轲))
由于我没收到你的邮件,所以...还是要感谢支持
byry 2003-11-12
  • 打赏
  • 举报
回复
大力鸣谢:topwork() , nonocast(如果没有如果)和各位兄台!!!



顶,是一种美德!!!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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