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,

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