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 :

[Windows]Lancer un programme, récupérer le résultat de l'execution ainsi que la sortie standard.


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 43
    Points : 32
    Points
    32
    Par défaut [Windows]Lancer un programme, récupérer le résultat de l'execution ainsi que la sortie standard.
    Bonjour,
    Je souhaite, dans mon programme sous Windows en c++, exécuter un autre programme.
    J'ai besoin de :
    - récupérer le résultat d’exécution (si le programme termine avec une erreur ou non)
    - Cacher son exécution (je ne veux pas voir la console ça fait pas jolie)
    - Récupérer ce que le programme affiche dans la console.
    - Savoir quand l’exécution du programme est terminé (si possible il me rend la main à la fin de l'exécution).

    Pour cela j'ai essayé :
    System() : je n'arrive pas à cacher la fenêtre, ni a récupérer les traces du programme.
    WinExec() : je n'arrive pas à récupérer de traces mais je peux cacher la fenêtre.
    CreateProcess() : mais je n'arrive pas à avoir les traces.
    popen () : je n'ai pas le résultat de l’exécution, ni à cacher la fenêtre.

    Sinon j'ai essayé de rediriger la sortie vers un fichier pour aller lire le fichier "ping.exe 127.0.0.1 > file.txt" mais ça ne fonctionne pas quand je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    result = WinExec("ping.exe 127.0.0.1 > file.txt", SW_HIDE);
    Il est possible que j'utilise mal une des fonctions, c'est pour ça que je fais appel à votre aide.

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    CreateProcess() fait tout ça, avec GetExitCodeProcess().
    Qu'entends tu par "je n'arrive pas à avoir les traces" ???

    Edit : Tu peux utiliser CreatePipe() et passer le handle obtenu à CreateProcess() pour récupérer sa sortie standard (il me semble qu'il faut passer par DuplicateHandle() avant). Je suis sûr qu'un google "createprocess : rediriger la sortie standard" te donnera plein d'exemples.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Tu peux rediriger la console vers un fichier, sans pour cela utiliser de fonction Windows.

Discussions similaires

  1. [2008] Récupérer le résultat d'un 'Execute SQL Task'
    Par Rymaya dans le forum SSIS
    Réponses: 3
    Dernier message: 30/03/2011, 15h17
  2. Réponses: 1
    Dernier message: 22/04/2010, 16h41
  3. [Free Pascal] Récupérer un caractère d'une WideString ainsi que sa longueur
    Par bubulemaster dans le forum Free Pascal
    Réponses: 0
    Dernier message: 29/06/2009, 09h21
  4. Réponses: 1
    Dernier message: 04/11/2008, 22h12
  5. Récupérer le résultat d'un EXECUTE
    Par Modo122-35 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/03/2006, 10h44

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