我目前正在尝试从C#WPF程序运行一个简单的CMD函数,并在WPF程序中显示输出。我想我已经接近了,但目前没有显示任何内容。该程序将打开并确认应运行CMD文件。一旦选择“是”,它将打开一个新框架并运行该程序,并将其通过管道传输回该框架。引用的CMD是一个简单的netstat cmd。我已将'CreateNoWindow'更改为False并看到CMD打开,因此它似乎正在执行。
编辑:我遗漏了一部分代码,哎呀!
编辑2:更新了代码以包含一些建议。不用找了。可能与我使用框架有关吗?
namespace WpfApp1
{
/// <summary>
/// Interaction logic for Page3.xaml
/// </summary>
public partial class Page3 : Page
{
public Page3()
{
InitializeComponent();
}
private void Frame_Navigated(object sender, NavigationEventArgs e)
{
Task.Run(() => { Muntrainout(); });
}
public void Muntrainout()
{
System.Diagnostics.Process muntrainout = new System.Diagnostics.Process();
muntrainout.StartInfo.RedirectStandardOutput = true;
muntrainout.StartInfo.RedirectStandardError = true;
muntrainout.StartInfo.RedirectStandardInput = true;
muntrainout.StartInfo.UseShellExecute = false;
muntrainout.StartInfo.CreateNoWindow = true;
muntrainout.StartInfo.FileName = @"C:\Users\user.name\Documents\Project\Test.cmd";
muntrainout.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler((sender, e) =>
{
Console.WriteLine(e.Data);
}
);
// Error Handling
muntrainout.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler((sender, e) => { Console.WriteLine(e.Data); });
muntrainout.Start();
muntrainout.BeginOutputReadLine();
muntrainout.WaitForExit();
}
}
}
答案 0 :(得分:0)
假设您想在frame
...
这对我有用:
muntrainout.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler((sender, e) =>
{
//Console.WriteLine(e.Data);
Frame1.Dispatcher.Invoke(() => { Frame1.Content += e.Data+Environment.NewLine; });
}
看起来有点丑陋,但是会显示输出...我不知道Console.WriteLine()
应该如何写入您的框架?