如何使用 C++ 代码运行 MFC 应用程序 exe 文件?
Posted
技术标签:
【中文标题】如何使用 C++ 代码运行 MFC 应用程序 exe 文件?【英文标题】:How to run a MFC application exe file with c++ code? 【发布时间】:2013-11-04 19:48:54 【问题描述】:我是 MFC 和 C++ 的新手。给了我一个 MFC 应用程序,基本上我想要实现的是在另一个项目中从我的标准 C++ 代码运行这个 MFC 应用程序,该项目将被构建到一个库中。这个 c++ 代码执行一些简单的 if else 逻辑,它决定 MFC 应用程序是否应该运行。有人能解释一下我是如何做到这一点的吗?
假设: MFCApplication.h 和 MFCApplication.cpp 在项目一中。
假设: 我的项目(项目2)涉及
DoWork.cpp 与正文
if(some_logic)
MFCApplication x;
x.run();
.
.
.
x.terminate();
【问题讨论】:
【参考方案1】:答案对于任何程序都是一样的,而不仅仅是 MFC 程序。要运行任何应用程序,您的程序应使用您希望运行的 exe 文件的完整路径和文件名调用 CreateProcess API。
【讨论】:
我想我应该更详细一点。我希望能够在我的代码中获得这个应用程序的一个实例,这样我也可以调用它的一些函数。 操作系统不是这样工作的。如果你有一个应用程序(一个 EXE 文件),你可以运行它,并可能通过它支持的一些进程间通信机制(如果有的话)与它通信。如果它是一个共享库(DLL),您可以将它加载到您的进程中并调用它的函数。你不能用 EXE 做后者。 @Igor 您的最后一句话具有误导性。你可以LoadLibrary
一个 EXE,就像你可以使用 DLL 一样。都是PE图片,真的没有区别。
你只能LoadLibrary
一个EXE来访问它的资源,或者检查它的PE结构。但是你不能在其中调用函数。一方面,EXE 通常不会首先导出任何函数。另一方面,它们通常没有重定位表,您不太可能将其加载到其首选地址。现在,理论上,构建一个导出函数并具有重定位表的 EXE 是可能的 - 但此时,您不妨将其制作为 DLL 并完成它。以上是关于如何使用 C++ 代码运行 MFC 应用程序 exe 文件?的主要内容,如果未能解决你的问题,请参考以下文章
C++ MFC - 在 CDialog::OnSize 事件 (GetWindowRect) 上没有引发运行时错误的代码执行失败
Windows API编程(不是MFC)用CreateWindowEx创建的按钮等子窗口控件是默认的Windows经典样式,如何改变?