Commande dos

cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011 - 20 déc. 2007 à 14:55
MrRenard Messages postés 2 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 15 janvier 2008 - 15 janv. 2008 à 10:14
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

cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
20 déc. 2007 à 22:27
Allez quoi.. personne n'a une idée ???

Je perds espoir... :'(
0
MrRenard Messages postés 2 Date d'inscription mercredi 14 décembre 2005 Statut Membre Dernière intervention 15 janvier 2008
15 janv. 2008 à 10:14
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.
0
Rejoignez-nous