C#調用DOS命令方法

來源:互聯網
上載者:User

C#調用DOS命令
我想編一個組合語言編輯器,但在調用masm.exe的時候,無法得到它的運行資訊。代碼如下:
Process p = new Process();
p.StartInfo .WorkingDirectory ="e:\\";
p.StartInfo.FileName = "masm.exe";
p.StartInfo.Arguments="test.asm;";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start ();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit ();
//textBox1.Text="aaa";
textBox1.Text =output;

textBox1沒有問題,顯示別的可以,但是顯示不出來運行時螢幕上顯示的資訊,只是一片空白。
而且,當我在系統下運行cmd進入dos時,運行masm test.asm; 有時候無任何顯示,有時候卻有編譯資訊,不知道為什麼。運行其它可執行檔也出現過這樣的情況。不知道和上面的問題有沒有聯絡呢?

 

命令就確實沒有輸出。

Process p = new Process();
p.StartInfo .WorkingDirectory ="c:\\";
p.StartInfo.FileName = "ping.exe";
p.StartInfo.Arguments="www.sina.com.cn";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.Start ();
string output = p.StandardOutput.ReadToEnd();
p.WaitForExit ();
MessageBox.Show(output);

 

C#中運行DOS命令如何隱藏DOS介面
一、.NET:
p = new Process();
p.StartInfo.FileName = "cmd.exe";
// 這裡是關鍵點,不用Shell啟動/重新導向輸入/重新導向輸出/不顯示視窗
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine("ping 127.0.0.1");// 向cmd.exe輸入command
p.StandardInput.WriteLine("exit");
p.WaitForExit(60000);
string s = p.StandardOutput.ReadToEnd();// 得到cmd.exe的輸出
p.Close();
?
二、win32:
STARTUPINFO si;//這裡的含義太多就不一一說了,自己查msdn吧
si.cb = sizeof(si);
CreateProcess( "cmd.exe" , NULL , NULL , NULL , FALSE , CREATE_NO_WINDOW , NULL , NULL , &si , NULL );

 

 

 

 

 

 

c#中的Process類可方便的調用外部程式,所以我們可以通過調用cmd.exe程式

加入參數 "/c " + 要執行的命令來執行一個dos命令
(/c代表執行參數指定的命令後關閉cmd.exe /k參數則不關閉cmd.exe)

1 private string RunCmd(string command)
2 {
3 //實例一個Process類,啟動一個獨立進程
4 Process p = new Process();
5
6 //Process類有一個StartInfo屬性,這個是ProcessStartInfo類,包括了一些屬性和方法,下面我們用到了他的幾個屬性:
7
8 p.StartInfo.FileName = "cmd.exe"; //設定程式名
9 p.StartInfo.Arguments = "/c " + command; //設定程式執行參數
10 p.StartInfo.UseShellExecute = false; //關閉Shell的使用
11 p.StartInfo.RedirectStandardInput = true; //重新導向標準輸入
12 p.StartInfo.RedirectStandardOutput = true; //重新導向標準輸出
13 p.StartInfo.RedirectStandardError = true; //重新導向錯誤輸出
14 p.StartInfo.CreateNoWindow = true; //設置不顯示視窗
15
16 p.Start(); //啟動
17
18 //p.StandardInput.WriteLine(command); //也可以用這種方式輸入要執行的命令
19 //p.StandardInput.WriteLine("exit"); //不過要記得加上Exit要不然下一行程式執行的時候會當機
20
21 return p.StandardOutput.ReadToEnd(); //從輸出流取得命令執行結果
 

 



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。