Je vais approfondir l'usage de Qprocess alors ... pas trés intuitif tout ca pour moi, j'ai fait que des programmes consoles jusqu'a maintenant :oops:
Juste, tu n'aurais pas un petit exemple concret d'usage de QProcess ... ?
Version imprimable
Je vais approfondir l'usage de Qprocess alors ... pas trés intuitif tout ca pour moi, j'ai fait que des programmes consoles jusqu'a maintenant :oops:
Juste, tu n'aurais pas un petit exemple concret d'usage de QProcess ... ?
Ah ok, javais pas vu le zip en bas pour l'exemple.
Je vais voir ça... je pense que j'aurai des questions ;)
Salut,
Je crois que tu as raison, il faut que j'utilise QProcess.
Corrige moi si je me trompe :
mon code source du programme X est non inclus dans mon code de GUI.
dans le code GUI, si je veux transmettre un nom de fichier à mon exécutable du programme X, je lance d'abord mon prog X avec m_process.start("chemin du .exe de X") puis je fais m_process.write("nom du fichier") ...
Mon programme X étant modifiée et comportant un stdin qui attend (dans une boucle) l'arrivée du paramètre.
C'est correct ?
Mon prog X a besoin du 'nom du fichier' dès le début du prog.
J'aimerai comprendre un peu mieux comment je récupère concrètement le paramètre dans mon programme X.
Merci !
Ok merci, encore mieux !
Pourrais tu me montrer comment je récupère concrètement cette valeur dans mon programme X ?
stdin<<argv ?
argv c'est le même parametre que ds le int main(int argc, char *argv[]), c'est fait exprès ?
Je dirais que stdin est associé a un m_process.write, tu peux me donner un exemple d'utilisation de stdin ?
Merci bcp !!! ;)
:king:
http://www.developpez.net/forums/sho...5&postcount=36Code:
1
2 Je dirais que stdin est associé a un m_process.write, tu peux me donner un exemple d'utilisation de stdin ?
J'ai vu déja l'exemple ... très bien fait au passage ! :king:
Mais je ne vois pas d'usage de stdin. J'aimerai juste connaître la syntaxe ac stdin pr recupérer l'info suite a un m_process.write
Ok pr argv , mais comment je fais pour attribuer a ma variable string file_name du prog X, la valeur passer dans argv ? je suis pas du tout familier avec ce processus.
String file_name = ???
Salut Sylar42,
Lorsque tu as posté sur l'autre forum, je t'ai indiqué un tuto illustrant l'utilisation de stdout et stdin. Qu'est ce que tu n'y pas compris?
Salut,
Oui j'ai vu ton exemple. Mais ce que je veux savoir c'est exactement la question que je pose précédemment.
Je me place du point de vue du code source du programme X (Mplayer dans ton exemple). Je ne sais pas comment modifier mon prog X pour pouvoir récupérer le paramètre passé en argument 'argv' du m_process.start dans le code source GUI.
En l'occurrence ici je veux attribuer à ma variable string 'name_file' du code source de X, la valeur du paramètre passé en argument dans 'argv'...
Code:
1
2
3
4 // code dans la GUI QStringlist argv; argv<<"nom du fichier"; m_process.start("chemin du .exe de X",argv) ;
Code:
1
2
3 // code dans le programme X int main(int argc, char *argv[]), string file_name = ??? // je voudrais que (file_name=="nom du fichier"), quel code faut-il ?
Merci pour votre aide à ce problème.
Il est communément admis (ie, sur la très large majorité des systèmes) que argv[0] contient le nom du prog lancé. Donc les arguments au dit programme commence à partir de argv[1].
A toi de vérifier si argc >= 2 pour ensuite accéder à argv avec le bon ensemble d'index (ici 1).
:king:Citation:
file_name= argv[1]
Parfait c'est ça que je voulais savoir :yaisse2:
Merci beaucoup ! Je continue ... bien évidemment d'autres questions suivront sans doute.
as tu compris la réponse???
Oauis j'ai compris pour argv.
Et pour stdin, je ne savais pas que c t équivalent a std::cin ... comme lorsqu'on récupère une info tapée dans la console. Je vois mieux maintenant... je vais tester tout ça dans les jours qui viennent !
Merci pour votre aide ! j'en ai bien besoin. C'est un peu déroutant pour moi de passer du monde des applications consoles au monde windows ;)
Je reviens à la charge ...
Question sans doute de débutant mais bon.
Mon prog X que je lance (par le code ci-dessous) est un programme console.
si je fais tourner X tout seul, il m'affiche les résultats du prog dans la console par des std:cout<<...Code:
1
2
3
4 // code dans la GUI QStringlist argv; argv<<"nom du fichier"; m_process.start("chemin du .exe de X",argv) ;
Sauf que là, en lançant le .exe par QProcess, ça va pas marcher??!
les stdout du prog X doivent être récupéré par des m_process.read (comme dans l'exemple que tu m'as fourni sur QProcess) ?
N'y a t'il pas moyen de garder l'affichage console de mon programme X ???
car comme je l'ai dit, je voulais me servir de l'interface que pour passer des arguments initiaux a mon .exe de X.
Si c'est pas possible ... ça veut dire que je dois récupérer les données de X pour les afficher moi même en fenêtre QT ?
Merci pour les précisions
Si tu peut (je pensais que personne allez demander). Mais je ne sait pas exactement comment ça joue sur les read et write :cry:. Si tu veut juste lancer ton appli et voir les résultat sur la console, regarde :
http://qt.developpez.com/doc/latest/...essChannelMode
http://qt.developpez.com/doc/latest/...annelMode-enum
Comme tu as fait une ihm. Ne serait 'il pas plus simpa d'afficher les résultats sur l'ihm? (comme dans l'exemple);)
Tu pourra mettre des couleur et tout et tout
Non ce n'est pas possible. Pense que command agit comme une appli qui affiche ce que l'autre envoie sur la sortie standard et tu comprendras pourquoi c'est pas possible...
Oui. Ou sinon, utiliser QProcess::startDetached, mais il me semblait que Mongaulois avait déjà proposé la solution ?!
Lol. Je n'ai pas compris son problème dans ce sens. La il faudra une expliquation de plus pour bien t'aider.
Nos deux réponses (moi et irmaden) sont correcte même si elles sont opposées.
Avec celle la, tu n'aura plus de contrôle de l'application lancé. A voir avec tes besoins.
Je crois que je vais utiliser QProcess::startDetached dans un premier temps , en lui passant les arguments initiaux.
Ce sera plus simple.
Dans l'absolu je n'ai pas besoin de contrôler le déroulement du programme, juste d'envoyer à mon programme les paramètres réglés dans l'interface .
Mais, à termes oui j'aimerai récupérer mes données pour faire un joli affichage en fenêtre mais je ne pense pas en être capable pour le moment.
Merci pour votre aide.