进程间(两个exe)函数调用的方法

wpngc 2004-06-23 05:39:42
请问,用VC6.0如何实现一个exe程序调用另一个exe程序的函数,两个exe都是VC编写的。
多谢各位大虾!
...全文
612 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmfweng 2004-07-02
  • 打赏
  • 举报
回复
UP
sharkhuang 2004-06-24
  • 打赏
  • 举报
回复
CORBA
dongfa 2004-06-24
  • 打赏
  • 举报
回复
自动化文档支持.
dakwing 2004-06-24
  • 打赏
  • 举报
回复
我实现了一个COM组件(进程EXE内),它提供接口给其他进程访问,然后其他进程实现出接口,实现双向通讯。
即:
EXE:A(包括了出接口 IA)
EXE: B(包括了出接口 IB)
COM组件: C(接口 IC1、IC2...)
过程:
A调用IC1接口,C接受并且解释该消息,调用B的出接口IB,B就可以接受到该消息,然后调用自身相应的函数。反之实现B->A的调用。
kvls 2004-06-24
  • 打赏
  • 举报
回复
废话
beijingshizi 2004-06-24
  • 打赏
  • 举报
回复
loadlibrary()

GetProcAddr
tblue7 2004-06-23
  • 打赏
  • 举报
回复
用CreateProcess函数,可以在一个程序中调用另外一个程序,被调用的程序作为一个子进程。参数比较多,具体间msdn
_j_ 2004-06-23
  • 打赏
  • 举报
回复
说的是lianglp()
_j_ 2004-06-23
  • 打赏
  • 举报
回复
问题是,楼主说的是进程间的
zpplayer 2004-06-23
  • 打赏
  • 举报
回复
_j_(街头混混甲)说的在理,如果只是一个exe(例如A.exe)导出一个函数给其他exe(例如B.exe)用,那么B.exe可以在其进程内加载A.exe就可以了,当然可以静态链接或者动态连接。
这些和进程间函数调用都扯不上什么关系,那么什么是进程间函数调用呢?举个例子或许可以更好解释,假设进程B想要得到进程A的运行参数,注意这里是进程而不是exe。我们知道要获得进程的运行参数当然是调用GetCommandLine函数(呵呵,地球人都知道),不过当然是要在进程自己内部调用才行(说了句废话)。那么进程B如何调用进程A中的GetCommandLine函数呢?这不进程间函数调用的问题就出来了吧。
其实正如前面有的兄弟提到的只要能得到要被调用函数在它的进程内部的函数地址就行了。我解决这个问题的方法是这样。首先,在进程B中注入一段代码,并申请一块内存区域作为参数传递使用,当然所有这些操作都在进程A中进行的。给出几个关键函数,OpenProcess、VirtualAllocEx、WriteProcessMemory。有心的兄弟因该可以猜出后面的动作了,没错就是调用CreateRemoteThread去运行那段注入到进程B中的代码,这段代码干什么用呢?当然是调用你想调用的函数了比如GetCommandLine啦,并且将调用后的结果写回参数传递区。剩下的事情就是进程B用ReadProcessMemory去读取结果了,当然有个前提就是要等在进程A中的执行线程顺利结束。这里我只是讲了一下大概的思路,其中还有许多具体的实现细节就由大家自己去解决吧。
wqs_qiu_shi 2004-06-23
  • 打赏
  • 举报
回复
明白,学了一招.
原来以为只有dll可以
lianglp 2004-06-23
  • 打赏
  • 举报
回复
在win32下,只要是PE文件格式,都可以用LoadLilrary(Ex)函数进行加载,
很显然,不论是dll或EXE等等,都可以调用其中的导出函数。
wqs_qiu_shi 2004-06-23
  • 打赏
  • 举报
回复
人家问的应该是直接调的情况,
如果回答的是dll,和进程间通讯,我用多线程,和发消息就ok了,还调什么exe
halk 2004-06-23
  • 打赏
  • 举报
回复
你们能告诉我如何实现吗,我也想学习学习.
exe->exe~~~~谢谢.我也有这个需求.

1.别说进程通信的情况,2.别说dll的情况.

-------------------
COM/DCOM也是dll的情况;.exe形式的dll也是dll的情况。
任何分属两个.exe的互相调用,都是进程间通信的情况。

你老人家把这两个全否决了,就只有求神仙了。
wqs_qiu_shi 2004-06-23
  • 打赏
  • 举报
回复
一会不见就升级了,呵呵.gx
_j_ 2004-06-23
  • 打赏
  • 举报
回复
对不起,我是混混

:D
wqs_qiu_shi 2004-06-23
  • 打赏
  • 举报
回复
我严重同意你的观点 _j_(街头混混甲)
_j_ 2004-06-23
  • 打赏
  • 举报
回复
其实,两进程想实现直接函数调用我觉得是不可能的.
但有很多变通的方法可以实现最后的效果,因为调用函数无外就是想得到处理后的结果.
_j_ 2004-06-23
  • 打赏
  • 举报
回复
EXE导出函数我是看过
不过调用的话可行吗?EXE导出函数是这个用途吗??

如果两个EXE分别属于两个进程,知道另一个EXE函数入口地址有什么用??

我认为EXE A导出函数的话,这种函数只能是用于当另一个EXE B把EXE A当做一个普通DLL,并用loadlibrary把EXE A加载为进程内模快时,才能用.
wqs_qiu_shi 2004-06-23
  • 打赏
  • 举报
回复
cxghj(网事如风) ( ) 信誉:101
PiggyXP(小猪◆你快乐于是我快乐) ( ) 信誉:121

你们能告诉我如何实现吗,我也想学习学习.
exe->exe~~~~谢谢.我也有这个需求.

1.别说进程通信的情况,2.别说dll的情况.
加载更多回复(5)

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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