createprocess调用程序并将输出重定向到文本文件

这个问题困扰了不久时间,但今天终于解决,其实,弄明白之后,很简单。下面是主要代码。

//首先注意结构的初始化,否则会报998错误

STARTUPINFO si={sizeof(si)};  

PROCESS_INFORMATION pi;

//运行的程序不显示输出

si.dwFlags=STARTF_USESHOWWINDOW;  

si.wShowWindow=FALSE;//不显示窗口  

ZeroMemory( &pi, sizeof(pi) );

//核心在于cmdline所代表的可执行程序之前必须加/c,如调用a.exe.将Dos界面的输出到文本文件a.txt,cmdline的格式为

"cmd \/c "...\\a.exe \> a.txt"。


BOOL bRet=::CreateProcess(NULL,cmdline,NULL,NULL,FALSE,0,NULL,"C:\\antiword\\",&si,&pi);  

//纠错

int error = GetLastError();  

if(bRet)  

{  

//等待程序结束,然后关闭进程

WaitForSingleObject(pi.hProcess,INFINITE);// Wait until child process exits.

::CloseHandle (pi.hThread);  

::CloseHandle (pi.hProcess);

}  

else  

{  

return false;  

}  

//ok,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章