¿Cómo se ejecuta un ejecutable con parámetros pasados desde un programa en C++ y cómo se obtiene el valor de retorno de la misma?Ejecutar un ejecutable con parámetros en C++ y obtener el valor de retorno;
Algo como esto: c: \ -v MyProgram.EXE
¿Cómo se ejecuta un ejecutable con parámetros pasados desde un programa en C++ y cómo se obtiene el valor de retorno de la misma?Ejecutar un ejecutable con parámetros en C++ y obtener el valor de retorno;
Algo como esto: c: \ -v MyProgram.EXE
manera portátil:
int retCode = system("prog.exe arg1 arg2 arg3");
con citas/espacios incrustados:
int retCode = system("prog.exe \"arg 1\" arg2 arg3");
En Windows, si desea un poco más de control sobre el proceso, puede usar CreateProcess para engendrar el proceso, WaitForSingleObject para esperar a que salga, y GetExitCodeProcess para obtener t él devuelve el código.
Esta técnica le permite controlar la entrada y salida del proceso secundario, su entorno y algunas otras partes del funcionamiento.
Edición
¿Cómo ejecutar un archivo ejecutable con parámetros pasados en él desde un programa en C++?
Solución
Uso ShellExecuteEx
y SHELLEXECUTEINFO
Edición
¿Cómo se obtiene el valor de retorno de ella?
Solución
Uso GetExitCodeProcess
y exitCode
cosas esencial saber
Si desea esperar hasta que el proceso, que está manejando por exe externa, se terminó este caso es necesario utilizar 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;
}
}
cómo manejas para para metros con espacios en ellos? (por ejemplo, "arg 1", "arg 2") – Bill