Commande dos

Signaler
Messages postés
191
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
30 juin 2011
-
Messages postés
2
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
15 janvier 2008
-
Bonjour, j'ai tenté d'intégrer une ligne de commande dos dans une richtextbox qui fonctionne selon le mode suivant:
l'utilisateur entre une ligne de commande, clique sur un bouton et la richtextbox doit afficher le resultat.

J'ai réalisé le code suivant:

 private void button1_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process process = new System.Diagnostics.Process();
            process.StartInfo.FileName = "cmd.exe";
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.StartInfo.RedirectStandardInput = true;
            process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            string input = richTextBox1.Text;
            string result;
            process.Start();
            process.StandardInput.Write(input);
            result = process.StandardOutput.ReadToEnd();
            process.Close();
            richTextBox1.Text = result;
        }

Le résultat est le suivant, la premiere fois que je clique sur le bouton, la fenetre de commande dos s'ouvre (alors qu'elle devrait etre cachée) et rien ne se passe. Je la ferme alors et j'obtiens alors:

Microsoft Windows XP [version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

F:\Dev_C#\Programmes_test\Programme_test\bin\Debug>

Ensuite quelque soit la commande que je tappe, lorsque je clique sur le bouton j'obtients juste :

Microsoft Windows XP [version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

F:\Dev_C#\Column_Check_V2\Column_Check\Column_Checker\Column_Checker\bin\Debug>Microsoft Windows XP [version 5.1.2600]

Si vous pouviez m'indiquer mon erreur, je débute et j'aimerais bien comprendre.

Merci.

Anz.

2 réponses

Messages postés
191
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
30 juin 2011

Allez quoi.. personne n'a une idée ???

Je perds espoir... :'(
Messages postés
2
Date d'inscription
mercredi 14 décembre 2005
Statut
Membre
Dernière intervention
15 janvier 2008

Pour la fenêtre dos qui s'affiche, il ne faut pas utiliser process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; en effet, cette propriété affecte les appli winform et non les appli console. Pour ne pas afficher la console il faut utiliser la propriété CreateNoWindow et la mettre à true. Ensuite, utilise la fonction writeline et non write. La fonction write écrit sur l'entrée standart mais ne valide pas l'entrée alors que writeline le fait.
Ensuite, si tu fait input = richtextbox.Text ca rempli l'entrée standart avec tout ce qu'il y a dans le text de la richtextbox alors que tu veux seulement la commande. Donc il faut manipuler un peu la chaine avant de l'écrire sur l'entrée standart

Le Renard.