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++Builder Discussion :

Prblème avec la commande system


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 30
    Points : 25
    Points
    25
    Par défaut Prblème avec la commande system
    :o
    Bonjour à tous!

    Mon appli doit lancer un exécutable; j'utilise pour ceci la commande system avec le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    AnsiString AppliName="C:\\Mydata\\truc\\toto\\pPrgrALancer.exe"
    system(AppliName.c_str());
    eh bien...ça ne fonctionne que de manière très aléatoire! certains programmes sont lancés (j'ai testé avec des petites appli maisons) d'autre non (alors qu'ils fonctionnent parfaitement si on les lance en cliquant dessus depuis l'explorateur....qqn a-t-il une idée lumineuse?

    Anne

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Salut

    Utilise plutôt l'api "ShellExecute", voir la doc sur MSDN en ligne.

  3. #3
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    861
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 861
    Points : 716
    Points
    716
    Par défaut
    Y-a-t-il le bon include ?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Quel Include dois-je mettre??
    qqn a-t-il un exemple de ShellExecute? Je ne l'ai jamais utilisé que dans le style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      ShellExecute(this->Handle,"open","mailto:moi@monsite.com?subject=pcs",0,0,SW_NORMAL);      
    }
    et je ne vois pas du tout comment lancer un exé!

    Merci
    Anne

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2002
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    ShellExecute(NULL, // Handle de la fenêtre parent
    "open", // Action à effectuer
    "toto.exe" // Fichier
    NULL, // Paramètres
    NULL, // Répertoire par défaut
    SW_SHOW // Manière d'afficher
    );

    a mon avis il faut inclure :

    #include <shlobj.h>
    ou
    #include <shellapi.h>

  6. #6
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    861
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 861
    Points : 716
    Points
    716
    Par défaut
    #include <stdlib.h>

    pour la commande system

    Bonne journée

  7. #7
    JEG
    JEG est déconnecté
    Membre éclairé
    Avatar de JEG
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 211
    Points : 727
    Points
    727
    Par défaut
    il se peut que tu appelles un programme avec un chemin absolu qui comporte un espaces (l'exemple type est "program files") si tu ne prends pas garde à l'encadrer avec des \" alors ce qui est derrière l'espace serait interprété comme un argument du program

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    J'avais bien inclu le
    et il n'y a aucun espace dans mes chemins dans le cas précis (du reste ça fonctionne avec une autre appli dans le mêm répertoire!

    Je vais donc voir du côté du shell execute merci microSeb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ShellExecute(NULL, // Handle de la fenêtre parent 
    "open", // Action à effectuer 
    "toto.exe" // Fichier 
    NULL, // Paramètres 
    NULL, // Répertoire par défaut 
    SW_SHOW // Manière d'afficher 
    );
    J'avoue ne rien comprendre aux paramètres!
    si je veux lancer "C:\\toto\\monPrg.exe" non situé dans le même répertore que l'appli dois-je écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ShellExecute(NULL, // Handle de la fenêtre parent 
    "open", // Action à effectuer 
    "C:\\toto\\monPrg.exe" // Fichier 
    NULL, // Paramètres 
    NULL, // Répertoire par défaut 
    SW_SHOW // Manière d'afficher 
    );
    et que faire des autres paramètres?

    Merci Anne

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 30
    Points : 25
    Points
    25
    Par défaut

    Pour ceux que ça pourrait intéresser:
    le problème est lié au répertoire courant! le code suivant corrige le bug et permet d'exécuter mon programme avec la commande system
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     String  dirC;
      String dirCmyInterface=GUI_DIR ; //ici je mets mon chemin
      dirC=GetCurrentDir();  //current directory remettre après commande
      // Pour aller dans le répertoire courrant de interface
      chdir(dirCmyInterface.c_str());
      ShowMessage(dirCmyInterface);
     String MyName=dirCmyInterface+"interface.exe";
     ShowMessage(MyName);
     system(MyName.c_str());
     // Pour revenir dans le répertoire courrant du programme général
     chdir(dirC.c_str());
    Il ne suffit en effet pas d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String MyName=dirCmyInterface+"interface.exe";
     system(MyName.c_str());
    Mais il faut impérativement effercture la commande chdir

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pb avec la commande system
    Par stevelaclasse dans le forum C
    Réponses: 1
    Dernier message: 30/08/2010, 12h29
  2. Réponses: 1
    Dernier message: 09/07/2010, 16h22
  3. Phénomène étrange avec la commande SYSTEM
    Par TopCao dans le forum MATLAB
    Réponses: 9
    Dernier message: 04/03/2010, 17h26
  4. ouvrir fichier avec la commande system()
    Par paissad dans le forum C
    Réponses: 5
    Dernier message: 19/05/2007, 21h28
  5. Problème avec les commandes systèmes
    Par ouakammathieu dans le forum Administration système
    Réponses: 8
    Dernier message: 27/05/2006, 15h06

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