2013-04-18 31 views
1

那麼你好,我該如何讓這個控制檯寫一行?我設法讓它在你處理它時運行cmd.exe,但它沒有寫出這一行。C#命令不寫一行

private void button1_Click(object sender, EventArgs e) 
    { 
     if (textBox1.Text == "alpha") 
     { 
      progressBar1.Value = 100; 
      if (progressBar1.Value == 100) 
      { 
       MessageBox.Show("Welcome back master!"); 
       System.Diagnostics.Process.Start(@"C:\Windows\System32\cmd.exe"); 
       Console.WriteLine("Hello!!!"); 
      } 

     } 
+1

你有沒有切入點。 – 2013-04-18 02:06:03

+0

你在哪裏寫行? – Pyromancer 2013-04-18 02:06:49

+0

我想他想從一個winform應用程序啓動一個命令行,然後將該行寫入新的控制檯。 – 2013-04-18 02:08:35

回答

4

我會認爲這是一種方法,你以某種方式管理調用。 System.Diagnostics.Process.Start調用將創建一個命令框。然而,Console.WriteLine將嘗試寫入創建你的進程(不是上述行中的cmd.exe),如果它是一個桌面應用程序,該調用將沒有控制檯寫入,因此沒有消息給你。

如果你想與控制檯流程交互
8

,你需要做的是這樣的: -

var p = new Process 
    { 
     StartInfo = 
      { 
       FileName = "cmd.exe", 
       UseShellExecute = false, 
       RedirectStandardInput = true, 
       RedirectStandardOutput = true 
      } 
    }; 
p.Start(); 
var w = p.StandardInput;     
w.WriteLine("Dir"); 
w.WriteLine("Exit");    
var theDirectoryListing = p.StandardOutput.ReadToEnd(); 
p.WaitForExit(); 
w.Close();    
p.Close();