Я использую CreateProcess () для выполнения внешнего консольного приложения в Windows из моего приложения GUI. Я хотел бы так или иначе собрать вывод, чтобы знать, были ли ошибки. Теперь я знаю, что должен сделать что-то с hStdOutput, но мне не удается понять что. Я плохо знаком с C++ и неопытным программистом, и я на самом деле не знаю, что сделать с дескриптором или как закурить трубку.
Как я получаю вывод к некоторой переменной (или файл)?
Это - то, что у меня есть момент:
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);
}
Этот код, вероятно, заставляет любого достойного программиста кричать, но (я не должен даже говорить это:) Это работает ;-)
Вопрос: Как я использую hStdOutput для чтения вывода в файл (например)?