调用外部函数(从一个exe到另一个)

时间:2014-01-10 16:10:33

标签: c++ winapi

让我们说过程1是主要过程,过程2是目标过程(我不能顺便编辑它),我希望能够从过程1中的过程2调用一个函数,有没有人有一个很好的方法呢?我正在考虑用一个调用该函数的导出注入一个dll并在外部使用GetProcAddress ...这可能吗?这是最好的方法吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:4)

你问题的标题和正文提出了两个微妙的不同问题。

一个可执行文件调用包含在另一个可执行文件中的函数非常简单,至少如果已导出相关函数的名称。您可以使用LoadLibrary加载可执行文件,就像使用DLL一样,然后使用GetProcAddress获取要调用的函数的地址,并正常调用它。但请记住,如果没有在其自己的可执行文件中调用之前发生的其他初始化,该函数可能无法正常工作。

在另一个进程(不仅仅是在另一个可执行文件中)的上下文中调用函数是相当多的工作。基本思想是有一个函数使调用和(例如)将结果写入与调用进程共享的某个内存。然后使用CreateRemoteThread使该函数在包含您需要调用的函数的进程的上下文中执行。

如果编写了目标进程以支持它,那么还有其他方法(如COM)可以更加干净地支持这种类型的功能。如果可以的话,它们通常更可取。

相关问题