Comment puis-je interagir avec l'invite de commande à partir de code C #?
-
10-07-2019 - |
Question
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 le résultat et de répéter. Mais n'arrive pas à faire travailler les trois premiers en même temps.
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. Si je ne configure pas RedirectStandardInput, je peux afficher l'intégralité de l'invite. Et si je ferme le rédacteur de StandardInput, je peux exécuter une commande, mais sans afficher l'invite ni pouvoir la répéter. Alors, comment puis-je obtenir l'invite à afficher, exécuter une commande et afficher la sortie ... à plusieurs reprises?
J'espère reproduire le comportement en ligne de commande de la Console2 , mais je suis un peu dépassé par c'est le code source.
La solution
Vérifiez http://www.codeproject.com/cs/library/CommandLineHelper. asp
[marc_s] pour que l'URL aboutisse à une page 404 introuvable.
L'URL appropriée est probablement: http://www.codeproject.com/ KB / string / CommandLineHelper.aspx
Autres conseils
Je pense que tu ne peux pas. Si vous affichez l'invite de commande de la console, vous ne pourrez pas lire le résultat. Je pense que vous devez dessiner votre propre invite de commande si vous lisez le résultat d'un processus.