如何运行带有从C ++程序传递的参数的可执行文件,以及如何从中获取返回值?
这样的事情: c:\ myprogram.exe -v
答案 0 :(得分:11)
便携式方式:
int retCode = system("prog.exe arg1 arg2 arg3");
使用嵌入式引号/空格:
int retCode = system("prog.exe \"arg 1\" arg2 arg3");
答案 1 :(得分:4)
在Windows上,如果您想要更多地控制该过程,可以使用CreateProcess来生成流程,WaitForSingleObject等待它退出,然后GetExitCodeProcess获取返回码。
此技术允许您控制子进程的输入和输出,其环境以及有关其运行方式的一些其他部分。
答案 2 :(得分:0)
问题的
如何运行带有从C ++程序传递的参数的可执行文件?
的解决方案的
使用ShellExecuteEx
和SHELLEXECUTEINFO
问题的
你如何从中获得回报价值?
的解决方案的
使用GetExitCodeProcess
和exitCode
要了解的基本事项
如果你想等到由外部exe处理的进程完成,那么需要使用WaitForSingleObject
bool ClassName::ExecuteExternalExeFileNGetReturnValue(Parameter ...)
{
DWORD exitCode = 0;
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = _T("open");
ShExecInfo.lpFile = _T("XXX.exe");
ShExecInfo.lpParameters = strParameter.c_str();
ShExecInfo.lpDirectory = strEXEPath.c_str();
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
if(WaitForSingleObject(ShExecInfo.hProcess,INFINITE) == 0){
GetExitCodeProcess(ShExecInfo.hProcess, &exitCode);
if(exitCode != 0){
return false;
}else{
return true;
}
}else{
return false;
}
}