1

所以我有这个代码:

process = new Process();
process.StartInfo.FileName = @"C:\windows\system32\cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = false;
process.StartInfo.RedirectStandardInput = true;
process.Start();
streamWriter = process.StandardInput;

当我运行该应用程序时,会出现一个 cmd 控制台,但它显示“句柄无效”。如果我尝试使用 streamWriter 写一些东西,我每次尝试都会收到大约四次无效句柄的消息。

开始时正常的文案微软的东西也不见了。

可能是什么问题呢?

如果我尝试使用 Windows Shell,而不是重定向流只是创建一个 cmd 进程,则会出现一个正常的 cmd 控制台,我可以毫无问题地输入它。

编辑:

private void Button_Click_1(object sender, RoutedEventArgs e)
{
process = new Process();
process.StartInfo.FileName = @"C:\windows\system32\cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
process.StartInfo.CreateNoWindow = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
sw = process.StandardInput;
sr = process.StandardOutput;

sw.WriteLine("echo 123");

MessageBox.Show(sr.ReadToEnd());

process.WaitForExit();
}

所以现在弹出一个空白的cmd,我必须手动关闭它,然后我才能从中获取信息,但是我不想丢失这个cmd实例,所以我能做些什么来让它保持“活着”并保持跟它“说话”?

编辑#2 所以“活着”是指我怎样才能做到,所以我不必关闭它来获取我的信息,我必须使用线程吗?因为在我看来 GUI 正在挂起/等待 cmd 关闭:/

4

1 回答 1

2

A WPF application doesn't have a console window. You need to create one if you want to have one.

An existing thread on this is below:

How to write to a console window from a windows application?

于 2012-11-26T23:18:48.367 回答