IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Intégrer commande dos dans une richtextbox ? [débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Par défaut Intégrer commande dos dans une richtextbox ? [débutant]
    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:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    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 et j'obtiens alors:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    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. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Première chose :
    Lorsque tu ecris un message sur le forum, sur la fenetre d'édition tu as plusieurs icones. Une qui a la forme de #.

    Edit ton précedent post, sélectionne ton code et appuis sur le bouton cité ci dessus.
    Cela met ton code entre des balises de code.
    Tu verras c'est mieux pour la lecture

    Pour ton problème, je crois que tu n'as pas compris comment fonctionne l'objet Process, je te conseillerais de faire un tour dans la faq C#, de prendre des tutoriaux dev.com sur l'utilisation de Process.

    En fait tu commences bien, tu remplis les arguments de startinfo et tu execute le process.
    process.StartInfo.FileName prend en parametre le programme à lancer, soit un chemin complet, soit une instruction directement reconnu pas le dos de C# (exemple : cmd, Netstat, ...)
    Ici tu as mis cmd donc le process te lance la console dos. Il fait ce que tu lui a dit.

    Si tu veux que process lance la commande écrite dans rtb alors faut la passer a process.StartInfo.FileName.

    Genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String commande = Fonction_Recuperation_Commande_Dos(richTextBox1.Text);
    process.StartInfo.FileName = commande
    Fonction_Recuperation_Commande_Dos est une méthode qui fouille le texte de la RicheTexteBox pour trouver la commande à lancer.


    Bon ensuite pour l'utilisation des redirection entrée/sortie, je te conseille aussi de regarder la FAQ et les tutoriaux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    process.StandardInput.Write(input);
    result = process.StandardOutput.ReadToEnd();
    La ici tu dit au process de prendre entrée un texte et de mettre le résultat en sortie.
    Je comprends l'idée, et je ne suis pas un expert sur le sujet, mais je n'ai jamais essayé d'envoyer en trée à une console dos un string.
    Je ne sais si cela peux marcher.

    Pour l'étape de redirection en sortie cela me semble correct.

    Enfin il doit y avoir une couille sur les entrées/sorties vu ce que tu obtiens après.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Par défaut
    Ok merci beaucou de t'être pirs la peine de me répondre.
    Je vais regarder les faq, en tout cas tu m'as un peu plus éclairé sur les methode process.

    Merci encore.
    Je vais faire quelques test.

    Cordialement,
    Anz.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Par défaut
    C'est encore moi !

    Bon j'ai réussi un truc qui me pertmet d'obtenir mieux que précédemment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    String strFilePath = AppDomain.CurrentDomain.BaseDirectory;
     
                System.Diagnostics.
                Process proc = new System.Diagnostics.Process();
     
                proc.EnableRaisingEvents =
                false;
     
                proc.StartInfo.WorkingDirectory = strFilePath;
     
                proc.StartInfo.FileName =
                "cmd.exe";
     
                proc.Start();
    La console dos se lance, mais par contre imposible de comprendre comment la rediriger ver la richtextbox en entrée et en sortie... :s

    Si tu as une idée ?


    Anz.

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    Pour la redirection en sortie ce que tu avais écrit me semblait correcte. Est ce que cela marche ? (bien sur sans le redirection en entrée)

    Comme je l'ai, je ne pense pas que la redirection en entrée qui envoie une string à la console dos soit possible.

    Ce que je ferais plutot, c'est une analyse du texte taper dans la RTB, repérer la ligne de commande, et lancer la console dos avec en argument la commande passé, puis redirigé la sortie vers la RTB.

    En espérant que cela t'aide

Discussions similaires

  1. Réponses: 9
    Dernier message: 14/12/2010, 12h18
  2. commande dos dans une appli ?
    Par noobyyy dans le forum C#
    Réponses: 10
    Dernier message: 02/11/2010, 13h52
  3. Réponses: 8
    Dernier message: 19/09/2007, 16h51
  4. Résultat d'une commande DOS dans une variable
    Par tomix81 dans le forum Général Python
    Réponses: 2
    Dernier message: 18/05/2007, 11h02
  5. lancer une commande dos dans une page ASP
    Par noznoz78 dans le forum ASP
    Réponses: 4
    Dernier message: 13/02/2006, 19h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo