所以我在做的是調用java.exe並用一些參數調用jar文件。如果everyting沒有問題並且該命令有效,那麼這些參數將打印到richtext框中。重定向標準錯誤
我遇到的問題是命令不正確。因此,在一次實例中,假設用戶鍵入傳入txtPassword的錯誤密碼。 Stanadard沒有被重定向。如果我在Dos控制檯中運行完全相同的命令,則會顯示消息「錯誤:身份驗證失敗」。我如何將該錯誤重定向到富文本框?我認爲重定向stdout會做到這一點,但顯然不是。
任何幫助將apprecaited。請參閱下面的代碼。
//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
你看過'Process'上的成員嗎?您可能會注意到errorDataReceived看起來像OutputDataReceived的等效版本... http://msdn.microsoft.com/en-us/library/system.diagnostics.process.errordatareceived.aspx – Chris 2012-02-02 14:16:59