Estoy utilizando CreateProcess() para ejecutar una aplicación de consola externa en Windows desde mi aplicación GUI. Me gustaría reunir de alguna manera la salida para saber si hubo errores. Ahora sé que tengo que hacer algo con hStdOutput, pero no entiendo qué. Soy nuevo en C++ y soy un programador inexperto y, de hecho, no sé qué hacer con un mango o cómo encender una tubería.Uso de un identificador para recopilar resultados de CreateProcess()
¿Cómo obtengo la salida a algún tipo de variable (o archivo)?
Esto es lo que tengo un momento:
void email::run(string path,string cmd){
WCHAR * ppath=new(nothrow) WCHAR[path.length()*2];
memset(ppath,' ',path.length()*2);
WCHAR * pcmd= new(nothrow) WCHAR[cmd.length()*2];
memset(pcmd,' ',cmd.length()*2);
string tempstr;
ToWCHAR(path,ppath); //creates WCHAR from my std::string
ToWCHAR(cmd,pcmd);
STARTUPINFO info={sizeof(info)};
info.dwFlags = STARTF_USESHOWWINDOW; //hide process
PROCESS_INFORMATION processInfo;
if (CreateProcess(ppath,pcmd, NULL, NULL, FALSE, 0, NULL, NULL, &info, &processInfo))
{
::WaitForSingleObject(processInfo.hProcess, INFINITE);
CloseHandle(processInfo.hProcess);
CloseHandle(processInfo.hThread);
}
delete[](ppath);
delete[](pcmd);
}
Este código probablemente tiene algún grito programador decente, pero (yo ni siquiera debería decirlo :) Funciona ;-)
El Pregunta: ¿Cómo uso hStdOutput para leer el resultado en un archivo (por ejemplo)?
relacionadas: [? Lanzar un exe/proceso con stdin stdout y stderr] (http://stackoverflow.com/questions/5485923/launch-an-exe-process-with-stdin -stdout-and-stderr/39648986). Además, consulte [tiny-process-library] (https://github.com/eidheim/tiny-process-library) que es muy conveniente. – Delgan