前一篇文章讲过如何隐藏控制台窗口,并把结果返回。但是控制台有个输出重定向输出到文件功能,这个在createprocess中是不支持的。因此那个函数改进如下
TCHAR strLog[1024]={0};
CString strCmp =_T("test.exe abc>abc.h");
RunCMD(strLog,strCmp.GetBuffer(),TRUE);//这个是用法
BOOL RunCMD(TCHAR *pLog,TCHAR *pCmd,BOOL bReconstruct)//最后这个参数说明是否重定向到文件
{
SECURITY_ATTRIBUTES sa;
BOOL ret;
sa.nLength=256;
sa.lpSecurityDescriptor=0;
sa.bInheritHandle=TRUE;
HANDLE hReadPipe1,hWritePipe1,hReadPipe2,hWritePipe2;
HANDLE hOpenFile;
CString strReconstruct;
_SECURITY_ATTRIBUTES sec;