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 :

Lancer un executable avec des paramètres


Sujet :

C++

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Par défaut Lancer un executable avec des paramètres
    Bonjour,

    J'ai un problème que je n'arrive pas à résoudre. J'ai deux programme C++ tout bête. Dans le premier programme, j'aimerais appelé le deuxième programme avec des paramètres, où le deuxième programme pourrait justement récupérer ces paramètres et les traiter.
    Dans le premier programme, j'appelle le second comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CString chemin = "Coucou";
    system ("\"C:\\exe\\test\\App2.exe\" " + parametre);
    Dans la deuxième application, je recupere comme ca dans le _tmain:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CString paramètre = argv[0];
    Bon, je me mélange peut-être les pinceaux, et je dois faire justement quelque chose de mal, mais quoi ? J'ai chercher sur internet, et ca parlait de "CreateProcess()" mais ca me parâit quand même beaucoup plus compliqué.

    PS : Je travaille sous Visual Studio 2010, et mes 2 "App" sont des Win32 console application, donc tout ce qui est de plus basique.

    Merci

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    system() fait exactement ce que ferait la même chaine de caractère tappée dans une console.

    int main(int argc, char** argv) est la signature de main que tu dois utiliser.

    Pour utiliser les arguments de lignes de commande, on regarde les différentes valeurs placées dans argv.
    Ce tableau de chaines possède deux propriétés spéciales:
    • argv[0] est le nom de la commande ayant servi à lancer le programme.
    • argv[argc] = null

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 2
    Par défaut
    Ok j'arrive à detecter un paramètre, mais quand j'en met plusieurs, ba les autres paramètres, mon programme ne les detectend pas .
    J'ai ca :
    App1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int nombre = 1;
    CString parametre1 = "Coucou";
    CString parametre2;
    fixation.Format("%d", nombre);
    system ("\"C:\\exe\\test\\App2.exe\" " + parametre1 + " " + parametre2);
    et pour l'App2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int main(int argc, char** argv)
    {
    	CString param1 = argv[1];
    	int param2 = (int) argv[2];
            //Traitement ...
    Quand il n'y a qu'un seul paramètre, tout tourne normalement. Mais lorsque j'en met un deuxième, ba le traitement de la deuxième App ne s'arrete pas (j'utiliser le parametre2 pour une boucle). Est-ce bien comme ca qu'il faut faire pour mettre plusieurs paramètres ?

    Et j'ai une autre question, mais je pense que je connais le réponse . Est ce que on peut mettre en paramètre des objets dans la fonction system() ? (comme par exemple un array). Si non, ya t-il une autre méthode que system pour pouvoir justement échanger des objets ?

    Merci

  4. #4
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 032
    Billets dans le blog
    12
    Par défaut
    Plutot que system, je te conseille de regarder du côté de execv si tu es sous Linux, et CreateProcess sous Windows qui te permettront de gérer tes paramètres correctement.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/04/2008, 15h01
  2. Réponses: 4
    Dernier message: 21/11/2007, 18h21
  3. excel+mysql : executé des requetes avec des paramètres
    Par overider dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/09/2007, 21h03
  4. [FLASH MX2004] Lancer une anim avec des paramètres ??
    Par gchanteux dans le forum Flash
    Réponses: 4
    Dernier message: 23/03/2005, 17h49
  5. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11

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