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:
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.
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(); }
En effet j'obtiens uniquement :
J'ai également essayé d'ajouter le code ci-dessous mais j'ai une erreur à l'execution.Microsoft Windows XP [version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
D:\Documents and Settings\user\Bureau\blackDetect\blackDetect>
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!
Partager