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