我有两个要一起运行的可执行文件:
main.exe
和side.exe
main.exe
文件是我无法修改的专有源代码,但是它利用修改来补充我可以修改的side.exe
。 main.exe
被杀死时,side.exe
仍在运行。我想创建一种链接两个可执行文件的方法,以便运行main.exe
也会运行side.exe
,关闭main.exe
也会关闭side.exe
。
当前,我尝试使用简单的批处理脚本来运行两个可执行文件。这可以启动两个可执行文件,但是在退出main.exe
时没有关闭两个文件的后一种行为:
script.bat :
@echo off
c:\path\to\first\exe\main.exe
c:\path\to\second\exe\side.exe
如何在源文件为 cpp 的批处理文件或side.exe中链接这两个文件?
答案 0 :(得分:0)
根据user4581301的评论。这是我生成的C ++代码。
使用CreateProcess :
以下代码在Side.exe中进行编译,如果尚未运行,则启动Main.exe。
if (!FindProcessId(L"Main.exe")) {
LPTSTR szCmdline = _tcsdup(TEXT("\"C:\\Program Files (x86)\\Path\\To\\Main\""));
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si)); //Use default startup info
ZeroMemory(&pi, sizeof(pi));
CreateProcess(NULL,
szCmdline,
NULL,
NULL,
FALSE,
CREATE_BREAKAWAY_FROM_JOB,
NULL,
NULL,
&si,
&pi
);
}
由于我的特定项目涉及注入DLL,并且是监视Main.exe的Qt GUI状态机,因此在状态更改后,我将运行以下程序:
if (!dllInjector.GetProcessID(MAIN_PROCESS_NAME))
{
// Code ommitted for brevity
OnExitClick();
// Simulates exit click "QApplication::exit();"
}
如果未检测到Side.exe
,它将关闭Main.exe
。
因此,其行为如下: 运行Side.exe运行Main.exe;关闭Main.exe,关闭Side.exe;然而, 这不会在运行Main.exe时运行Side.exe。我的问题中提到的其他方法似乎可行。