C# Windows窗体写入控制台
我只是试图打开控制台并编写一行代码,然后在写入该行后控制台保持打开状态的情况下执行它。当前,命令行打开时为空白,没有写入任何内容。有办法解决这个问题吗C# Windows窗体写入控制台,c#,winforms,console,C#,Winforms,Console,我只是试图打开控制台并编写一行代码,然后在写入该行后控制台保持打开状态的情况下执行它。当前,命令行打开时为空白,没有写入任何内容。有办法解决这个问题吗 Process cmd = new Process(); cmd.StartInfo.FileName = "cmd.exe"; cmd.StartInfo.UseShellExecute = false; cmd.StartInfo.RedirectStandardInput = true; cmd.StartInfo.RedirectStan
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.StandardInput.WriteLine("pause");
我们应该解决它
请记住添加:
cmd.StartInfo.RedirectStandardInput = false;
如果这不起作用,那么很可能仍然是一个问题,正如微软关于CMD和输出的报道。请参阅:这将解决此问题:
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();
}
}
}
命令提示符仍然为空。这不是不退出的问题。问题在于提示中没有显示或执行文本。那么,RedirectStandardOutput肯定应该为false吗?这会导致命令提示根本无法打开。看起来它可能只是快速打开和关闭。我编辑了我的原稿。你能确认你的是相同的吗?在Windows运行对话框中键入:cmd/K echo hello-它可以根据你的需要工作。现在在程序中使用Process命令行参数执行同样的操作。不需要输入/输出重定向。
Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.Arguments = "/K \"echo hello\"";
cmd.Start();