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();
这将修复它:
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();