C# get-process-output, während der Ausführung
Gibt es trotzdem die Umleitung der standard-Ausgabe des gestarteten Prozesses und erfassen es als sein geschieht. Alles, was ich gesehen habe, die nicht einfach eine ReadToEnd nachdem der Prozess abgeschlossen ist. Ich möchte in der Lage sein, um die Ausgabe, wie es gedruckt wird.
Edit:
private void ConvertToMPEG()
{
//Start the child process.
Process p = new Process();
//Redirect the output stream of the child process.
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
//Setup filename and arguments
p.StartInfo.Arguments = String.Format("-y -i \"{0}\" -target ntsc-dvd -sameq -s 720x480 \"{1}\"", tempDir + "out.avi", tempDir + "out.mpg");
p.StartInfo.FileName = "ffmpeg.exe";
//Handle data received
p.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
p.Start();
}
void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
Debug.WriteLine(e.Data);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Prozess.OutputDataReceived Ereignis aus dem Prozess zu erhalten die Daten, die Sie brauchen.
Beispiel:
RedirectStandardOutput
auf true für diese zu arbeiten.ReadToEnd(..)
funktioniert es für Sie?myProc.BeginOutputReadLine();
nachdem ich begonnen hatte der Prozess.if (!String.IsNullOrEmpty(outLine.Data))
für? Können die Daten überhaupt null sein? Wollen Sie nicht die leeren Zeilen in der Ausgabe die meiste Zeit?dataReceivedEventHandler
- Dokumentation sagt: "Wenn die Weiterleitung abgeschlossen ist, eine null-Linie wird an den event-handler. Damit Ihr event handler überprüft diese Bedingung vor dem Zugriff auf die Eigenschaft Data. Zum Beispiel können Sie verwenden die statische Methode String.IsNullOrEmpty zur Validierung der Daten-Eigenschaft in der Ereignisprozedur."So, nach ein wenig mehr Graben fand ich heraus, dass ffmpeg verwendet stderr für die Ausgabe. Hier ist mein modifizierter code die Ausgabe.