Redirection de la sortie d'une application console externe vers la listbox d'une winform

Description

En réponse à ma propre question ;)
(http://www.csharpfr.com/infomsg_PROCESS-AVEC-OUTPUT-DANS-TEXTBOX_985135.aspx)

Une application winform avec une listbox et 2 boutons (start et cancel).
Une application console qui écrit toutes les secondes une ligne.

La application winform lance l'application console, mais la console reste caché, et le texte affiché normalement dans la console est redirigé vers la listbox.

Source / Exemple :


this.myProcess = new Process();
this.myProcess.EnableRaisingEvents = true;
this.myProcess.Exited += new System.EventHandler(this.myProcess_Exited);
this.myProcess.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(this.myProcess_ErrorDataReceived);
this.myProcess.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(this.myProcess_OutputDataReceived);

this.myProcessStartInfo.RedirectStandardError = true;
this.myProcessStartInfo.RedirectStandardOutput = true;

this.myProcessStartInfo.UseShellExecute = false;
this.myProcessStartInfo.CreateNoWindow = true;

this.myProcess.Start();
this.myProcess.BeginErrorReadLine();
this.myProcess.BeginOutputReadLine();

Conclusion :


Pour lancer l'application Console, on utilise la class System.Diagnostics.Process
Des évènements sont gérés pour récupèrer la sortie de la console.

C'est du très vite fait, c'est juste pour donner UNE des solutions pour rediriger une application Console vers une application winform!

Keyser ;)

Codes Sources

A voir également