Commande dos intégrée dans un programme

cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011 - 19 déc. 2007 à 17:44
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 - 20 déc. 2007 à 06:52
Bonjour,

En tant que débutant je n'ai aucune idée de la possibilité de réalisation de mon projet:
Je voudrais savoir s'il est possible d'intégrer une console de ligne de commande dos dans un programme, plus particulierement sous la forme d'une genre de textbox, donc totalement intégrée à une form. (je ne souhaite pas qu'elle apparaisse dans une nouvelle fenetre..

Je doute que celà soit faisable, mais sait-on jamais..

Merci de votre attention.

Anz.

10 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
19 déc. 2007 à 19:19
Salut,

regarde si ce Thread ne peut pas t'aider

Mx
MVP C# 
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
19 déc. 2007 à 20:44
Heu j'ai oublié de préciser que je débutait...

Voici le code que j'ai pu voir le thread :

System.Diagnostics.Process process = new System.Diagnostics.Process();
            process.StartInfo.FileName = "cmd.exe";
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardOutput = true;
            process.Start();
            string result = process.StandardOutput.ReadToEnd();

concretement comment m'en servir ??
j'ai essayer de le coller tel que; je vois apparaitre pendant une fraction de seconde la console qui disparait ensuite...

Pourrait-tu m'en dire plus ?

Merci.

Anz.
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
19 déc. 2007 à 21:19
Bon j'arrive a retourner la console dans une richtextbox mais comment faire s'executer les commandes que j'y entre ensuite ?

Merci.

Anz.
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
19 déc. 2007 à 22:14
Procédé similaire avec StandardInput

<hr size="2" width="100%" />Julien.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
19 déc. 2007 à 22:32
Ok... heu je suis un completement perdu, j'imagine que la programmation est inaccessible pour les débutants ?

Comment utiliser StandartInput ?
Naïvement j'ai codé :

System.Diagnostics.Process process = new System.Diagnostics.Process();
                process.StartInfo.FileName = "cmd.exe";
                process.StartInfo.UseShellExecute = false;
                process.StartInfo.RedirectStandardOutput = true;
                process.Start();
                string result = process.StandardOutput.ReadToEnd();
                richTextBox1.Text = result;
                string input = richTextBox1.Text;
                process.StandardInput.Write(input);

Bien entendu ça ne donne rien d'autre qu'une odieuse erreur...

Quelques explications seraient bienvenues.

Merci encore.
Anz
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
19 déc. 2007 à 22:41
Ouaip bon début ! Mais l'erreur ne te parle-t-elle pas d'une impossibilité car pas redirigé ? ou un truc du style ?
Rajoute donc
process.StartInfo.RedirectStandardInput = true;
Après
process.StartInfo.RedirectStandardOutput = true;

Jette un oeil ici pour plus d'infos.

<hr size="2" width="100%" />Julien.
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
19 déc. 2007 à 22:52
Sisi c'est celà même ! Merci pour l'information.

En rajoutant ta ligne je n'ai plus d'erreur, mais maintenant l'impossibilité d'ecrire ni dans la richtextbox (ce que je souhaite faire) ni dans la fenetre de la console qui s'ouvre (que j'aimerais d'ailleurs ne pas voir).

Comment cela se fait-t-il ?

En attendant je regarde le lien que tu m'a envoyé mais j'avoue ne pas tout saisir.

Cela peut il etre du au fait que j'ai inséré cette procédure dans l'evenement click d'un bouton ?

private void button1_Click_1(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.Start();
            string result = process.StandardOutput.ReadToEnd();
            richTextBox1.Text = result;
            string input = richTextBox1.Text;
            process.StandardInput.Write(input);   
           
           
           
        }

        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {

           
        }
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
19 déc. 2007 à 23:04
En m'inspirant du lien que tu m'a envoyé j'ai essayé de faire quelquechose qui ressemble à cela:

private void button1_Click_1(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.Start();
            string result = process.StandardOutput.ReadToEnd();
            richTextBox1.Text = result;
            //string input = richTextBox1.Text;
            //process.StandardInput.Write(input);
            string inputText;
            int numLines = 0;
            do
            {
                richTextBox1.Text = "Enter a line of text (or press the Enter key to stop):";

                inputText = richTextBox1.Text;
                if (inputText.Length > 0)
                {
                    numLines++;
                    process.StandardInput.Write(inputText);
                }
            } while (inputText.Length != 0);

           
            if (numLines > 0)
            {
                richTextBox1.Text = result;
               
            }
            else
            {
                richTextBox1.Text = " No input was sorted";
            }
           
           
        }

Mais sans plus de resultat..
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
19 déc. 2007 à 23:21
Bon, j'avou j'ai fait n'importe quoi, je crois (je crois je précise) avoir un peu mieux compris:

alors voilà au final ce que j'ai fait:

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;
            string input = richTextBox1.Text;
           
            process.Start();
      
            process.StandardInput.Write(input);
            string result = process.StandardOutput.ReadToEnd();
            process.Close();
            richTextBox1.Text = result;

        }

Normalement quand je clique sur boutton1 je devrai voir s'afficher le resultat de ma commande, mais non.. ou est le probleme ?
0
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
20 déc. 2007 à 06:52
Zut, là je ne sais pas de tête, j'ai cours ce matin, puis un truc cet après-midi, je regarde ce soir si je peux t'aider...

<hr size="2" width="100%" />Julien.
0
Rejoignez-nous