2013-04-18 73 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();