2009-10-29 12 views
2

J'essaie d'interagir avec l'invite de commande Windows à partir du code. Mon but est d'afficher l'invite, de mettre une commande, d'afficher la sortie et de répéter. Mais n'arrive pas à faire fonctionner les trois premiers en même temps.Comment puis-je interagir avec l'invite de commande à partir du code C#?

 private void button2_Click(object sender, EventArgs e) 
     { 
     Process proc = new Process(); 
     proc.StartInfo.FileName = "cmd"; 
     proc.StartInfo.CreateNoWindow = true; 
     proc.StartInfo.UseShellExecute = false; 
     proc.StartInfo.RedirectStandardOutput = true; 
     proc.StartInfo.RedirectStandardInput = true; 

     proc.Start(); 
     StreamReader k = new StreamReader(proc.StandardOutput.BaseStream); 

     textBox2.Text = k.ReadToEnd();    
     } 

Le code ci-dessus se bloque simplement. Si je ne définis pas RedirectStandardInput, je peux afficher l'invite entière. Et si je ferme l'auteur pour StandardInput je peux obtenir une commande pour courir, mais sans voir l'invite, ou être capable de le répéter. Alors, comment puis-je obtenir l'invite à afficher, exécuter une commande et afficher la sortie ... à plusieurs reprises?

Je souhaite reproduire le comportement de la ligne de commande de Console2 mais je suis un peu dépassé par son code source.

Répondre

-1

Je pense que vous ne pouvez pas. Si vous affichez la commande de la console Invite, vous ne pourrez pas lire la sortie. Je pense que vous devez dessiner votre propre invite de commande si vous lisez la sortie d'un processus.