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++/CLI Discussion :

Redirection de la sortie standard d'une console


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    F�vrier 2011
    Messages
    21
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2011
    Messages : 21
    Par d�faut Redirection de la sortie standard d'une console
    Bonjour,

    Je suis sous microsoft visual studio 10 en C++ Winform.

    J'aimerais ex�cuter une ligne de commande, � partir du C++, qui g�n�re une sortie standard.
    Ce que je souhaiterais c'est obtenir cette sortie std dans une textbox, soit en temps r�el soit une fois la commande termin�e.

    Cette la dur�e de traitement de cette commande peut �tre assez longue, donc j'aimerais aussi avoir une barre de progression.

    Apr�s plusieurs recherches, j'ai pens� faire quelque chose comme ca:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
     
    		//envoi de la commande pour analyser le fichier avi
    		//system(ccmd);
                    //progressBar1->PerformStep();
     
    		Process^ compiler = gcnew Process;
    		compiler->StartInfo->FileName = "cmd";
    		compiler->StartInfo->Arguments = "ffmpeg -i"; //"ffmpeg -i \""+fichierPath+"\" -vf blackdetect=d=0.5:pic_th=0.70:pix_th=0.00 -f null -";
    		compiler->StartInfo->UseShellExecute = false;
    		compiler->StartInfo->RedirectStandardOutput = true;
    		compiler->Start();
    		textBox2->AppendText(compiler->StandardOutput->ReadToEnd());
    		compiler->WaitForExit();
    }
    Le souci c'est que cette solution ne me permet pas d'obtenir la sortie std apr�s l'ex�cution de la commande avec les arguments qui lui sont pass�s.
    En effet j'obtiens uniquement :

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

    D:\Documents and Settings\user\Bureau\blackDetect\blackDetect>
    J'ai �galement essay� d'ajouter le code ci-dessous mais j'ai une erreur � l'execution.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    		// Use a stream writer to synchronously write the sort input.
    		StreamWriter^ sortStreamWriter = compiler->StandardInput;
    		// Start the asynchronous read of the sort output stream.
    		compiler->BeginOutputReadLine();

    Merci d'avance pour votre aide!

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 510
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 510
    Par d�faut
    Pourquoi lancer "cmd" et pas directement "ffmpeg" ?

    Il faut attendre la fin de l'ex�cution pour avoir le r�sultat dans la console :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    		compiler->WaitForExit();
    		textBox2->AppendText(compiler->StandardOutput->ReadToEnd());

  3. #3
    Membre averti
    Inscrit en
    F�vrier 2011
    Messages
    21
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2011
    Messages : 21
    Par d�faut
    Aaaah en effet, je sais pas pourquoi je m'accroche � la console..!
    J'ai donc suivi vos conseils et j'utilise donc le code suivant:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    	Process^ compiler = gcnew Process;
    		compiler->StartInfo->FileName = "ffmpeg";
    		compiler->StartInfo->Arguments = " -i";
    		compiler->StartInfo->UseShellExecute = false;
    		compiler->StartInfo->RedirectStandardOutput = true;
    		compiler->Start();
    		compiler->WaitForExit();
    		textBox2->AppendText(compiler->StandardOutput->ReadToEnd());
    Mais toujours rien dans la textbox2.
    J'ai l'impression que les arguments ne passe pas
    Normalement un "ffmpeg -i" dans la console donne comme r�sultat la version de ffmpeg.

    Merci pour votre aide!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 1
    Dernier message: 29/06/2007, 02h26
  2. Recupération d'un sortie standard via une commande ssh.
    Par yanndan dans le forum Administration syst�me
    R�ponses: 1
    Dernier message: 28/08/2006, 16h56
  3. Redirection de la sortie standard
    Par ankou82 dans le forum SDL
    R�ponses: 20
    Dernier message: 29/05/2006, 13h54
  4. [D�butant(e)] Redirection de la sortie standard
    Par salber dans le forum Entr�e/Sortie
    R�ponses: 3
    Dernier message: 17/06/2005, 15h34
  5. redirection de la sortie standard
    Par sorari dans le forum C++
    R�ponses: 8
    Dernier message: 19/05/2005, 11h47

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