Windows窗体写入控制台

本文关键字:控制台 窗体 Windows | 更新日期: 2023-09-27 18:03:32

我只是试图打开控制台并写入一行,并在写入该行后保持控制台打开的情况下执行它。当前,命令行以空白开头,不写入任何内容。有办法解决这个问题吗?

Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = false;
cmd.Start();
cmd.StandardInput.WriteLine("echo hello");
cmd.StandardInput.WriteLine("pause");
cmd.WaitForExit();

Windows窗体写入控制台

这将修复它:

cmd.StartInfo.RedirectStandardOutput = false;

这个很适合我:

using System.Diagnostics;
 namespace ConsoleApplication1
 {
  class Program
  {
    static void Main(string[] args)
    {
        Process cmd = new Process();
        cmd.StartInfo.FileName = "cmd.exe";
        cmd.StartInfo.UseShellExecute = false;
        cmd.StartInfo.RedirectStandardInput = true;
        //cmd.StartInfo.RedirectStandardOutput = true;
        cmd.Start();
        cmd.StandardInput.WriteLine("pause");
        System.Threading.Thread.Sleep(5000);
        cmd.StandardInput.WriteLine(" ");
        cmd.StandardInput.WriteLine("dir /p");
        cmd.StandardInput.WriteLine("exit");
        cmd.WaitForExit();
    }
  }
}

你很可能只是发出一个暂停:

cmd.StandardInput.WriteLine("pause");

应该能解决。

记得加上:

cmd.StartInfo.RedirectStandardInput = false;

如果这不起作用,那么很可能仍然是一个问题,正如微软关于CMD的具体报告和输出。参见:http://connect.microsoft.com/VisualStudio/feedback/details/609801/unable-to-redirect-only-the-standard-input-of-process-cmd-exe-or-batch-file-from-windows-form-application

        Process cmd = new Process();
        cmd.StartInfo.FileName = "cmd.exe";
        cmd.StartInfo.Arguments = "/K '"echo hello'"";
        cmd.Start();