我正在使用 CreateProcess() 从我的 GUI 应用程序在 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 将输出读取到文件(例如)?