1

那么你好,我如何让这个控制台写一行?我设法让它在你处理它时运行 cmd.exe,但它不写行。

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!!!");
            }

        }
4

2 回答 2

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();
于 2013-04-18T02:23:37.097 回答
4

我假设这是一种您设法调用的方法。System.Diagnostics.Process.Start 调用将创建一个命令框。但是,Console.WriteLine 将尝试写入创建您的进程的任何一个(不是上面行中的 cmd.exe),如果它是桌面应用程序,则调用将没有控制台可写入,因此不会给您任何消息。

于 2013-04-18T02:08:33.473 回答