2017年8月16日 星期三

C#中隱式操作CMD命令列視窗 (process)

C#中隱式操作CMD命令列視窗 (轉)
ProcessStartInfo.UseShellExecute 屬性
備註
將這個屬性ProcessStartInfo.UseShellExecute 屬性設定為 false 能讓您重新導向輸入、輸出和錯誤資料流。如果 UserName 屬性不是 null 或空字串,則 UseShellExecute 必須是 false,否則呼叫 Process.Start(ProcessStartInfo) 方法時會擲回 InvalidOperationException。當您使用作業系統 Shell 啟動處理序時,您可以使用 Process 元件,啟動任何文件 (這個文件是任何與具有預設開啟動作的可執行檔相關聯的已登錄檔案類型),並對檔案執行作業,例如列印。 當 UseShellExecute 為 false 時,您只能使用 Process 元件啟動可執行檔。

//實例一個Process類,啟動一個獨立進程
Process p = new Process();
//Process類有一個StartInfo屬性
//設定程式名
p.StartInfo.FileName = "cmd.exe";  
//設定程式執行參數
p.StartInfo.Arguments = "/c " + command;
//關閉Shell的使用
p.StartInfo.UseShellExecute = false;
//重定向標準輸入
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
//重定向錯誤輸出
p.StartInfo.RedirectStandardError = true;
//設置不顯示視窗
p.StartInfo.CreateNoWindow = true;
//啟動
p.Start();
//也可以用這種方式輸入要執行的命令
//不過要記得加上Exit要不然下一行程式執行的時候會當機
//p.StandardInput.WriteLine(command);
//p.StandardInput.WriteLine("exit");

//從輸出流取得命令執行結果
return p.StandardOutput.ReadToEnd();

沒有留言:

張貼留言