所以我正在做的是调用java.exe并使用一些参数调用jar文件。如果每个都很好并且命令有效,则参数将打印到richtext框中。
我遇到的问题是命令不正确。因此,在一次实例中,假设用户键入了传递给txtPassword的错误密码。 Stanadard没有被重定向。如果我在Dos控制台中运行完全相同的命令,则会显示消息"错误:验证失败"。如何将该错误重定向到富文本框?我以为重定向stdout会这样做,但显然不是。
任何帮助都会得到帮助。请参阅下面的代码。
//Declare and instantiate a new process component.
System.Diagnostics.Process process1;
process1 = new System.Diagnostics.Process();
process1.StartInfo.UseShellExecute = false;
process1.StartInfo.RedirectStandardOutput = true;
process1.StartInfo.CreateNoWindow = true;
process1.StartInfo.FileName = "java.exe ";
toLoad = lstBarToLoad.Items[i].Text;
process1.StartInfo.Arguments = "-Xmx512M -jar Deploy.jar" + txtPassword;
process1.StartInfo.Arguments += toLoad;
Console.WriteLine(process1.StartInfo.Arguments);
process1.Start();
process1.OutputDataReceived += (s, a) => myMethod(a);
process1.BeginOutputReadLine();
//myMthod
private void myMethod(DataReceivedEventArgs e)
{
if (e.Data != null)
{
Action action = () => rchsdtOut.Text += "\r\n" + e.Data.ToString();
rchsdtOut.BeginInvoke(action, null);
Console.WriteLine(e.Data.ToString());
}
}//end of private
答案 0 :(得分:2)
以及使用
process1.StartInfo.RedirectStandardOutput = true;
您还需要使用
process1.StartInfo.RedirectStandardError = true;
获取或设置一个值,该值指示应用程序的错误输出是否写入Process.StandardError流
然后您可以读出错误并随意使用它:
string error = process1.StandardError.ReadToEnd();
答案 1 :(得分:0)
您可以使用与RedirectStandardError属性相同的方式使用RedirectStandardOutput属性。