[C#] Recupperrer la sortie standard d'un process

Petite précision tout d’abord, je developpe avec la beta de visual C# express.

J’aimerais recupperrer ce qu’un process que je lance devrait normalement afficher sur la sortie standard. J’ai codé un petit truc, mais je m’arrache les cheveux à essayer de trouver pourquoi je n’arrive à recupperrer que le debut de ce que renvoye le process.

 // On désactive l'ouverture d'une fenetre de la console windows  proc.StartInfo.UseShellExecute = false;  proc.StartInfo.CreateNoWindow = true;  // On redirige l'entrée standard  proc.StartInfo.RedirectStandardInput = true;  // On redirige la sortie standard  proc.StartInfo.RedirectStandardOutput = true;  // On définit la commande  proc.StartInfo.FileName = "cmd.exe";  // Démarrage de la commande  proc.Start();  //on lance le thread d'affichage de la sortie standard  sortie_standard = proc.StandardOutput;  AfficheSortieStandard();

[code]  private void AfficheSortieStandard()
 {
 char buffer_lecture;
 string string_lecture;
 int i;
 int j;

 //on affiche ce que le process a renvoyé

 while (sortie_standard.Peek() != -1)
 {

   buffer_lecture = new char[256];
   string_lecture = «  »;

   sortie_standard.Read(buffer_lecture, 0, buffer_lecture.Length);
   for (i = 0; i < buffer_lecture.Length; i++)
   {
   string_lecture = string_lecture + buffer_lecture[i];
   }
   richTextBox1.Text = richTextBox1.Text + string_lecture;

&nbsp;}

 }[/code]

Le probleme c’est que ça me permet de recuperrer que

alors que normalement je devrais recuperrer

[quote]Microsoft Windows XP [version 5.1.2600]
© Copyright 1985-2001 Microsoft Corp.
                                     
C:\tralala>[/quote]

J’ai essayé avec des ReadLine en mettant dans la condition d’arret du while que le résultat du readline est nul mais ça fait une boucle infinie, ce qui est pas vraiment mieux.

Tenez, parce que je suis mesquin aujourd’hui : .NET sapu, JAVA Ru1z !

[quote name=‘LeBaronNoir’ date=’ 25 Aug 2005, 19:33’]Tenez, parce que je suis mesquin aujourd’hui : .NET sapu, JAVA Ru1z !
[right][post=“389574”]<{POST_SNAPBACK}>[/post][/right][/quote]
Merci c’était gentil, ça fait plaisir.

Et si tu redirige stdErr en plus de stdOut?

Je testerais ça demain et je posterais le resultat.

[quote name=‘GloP’ date=’ 25 Aug 2005, 20:52’]Et si tu redirige stdErr en plus de stdOut?
[right][post=“389608”]<{POST_SNAPBACK}>[/post][/right][/quote]

J’ai testé et ça n’a rien changé. En fait j’ai trouvé la solution sur developpez.com : il suffisait de le lire le streamreader caractere par caractere dans un thread separé. Si jamais quelqu’un a le même probleme dans le futur la solution se trouve : (en modifiant un peu leur code evidement)

(je vais surement quand même rediriger aussi StandardError parce que ça peut toujours servir)