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
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 30
    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
    Par d�faut
    Salut

    Utilise plut�t l'api "ShellExecute", voir la doc sur MSDN en ligne.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

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

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 30
    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:[email protected]?subject=pcs",0,0,SW_NORMAL);      
    }
    et je ne vois pas du tout comment lancer un ex�!

    Merci
    Anne

  5. #5
    Membre averti
    Inscrit en
    Ao�t 2002
    Messages
    19
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2002
    Messages : 19
    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
    863
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 863
    Par d�faut
    #include <stdlib.h>

    pour la commande system

    Bonne journ�e

  7. #7
    JEG
    JEG est d�connect�
    Membre chevronn�
    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
    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
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 30
    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
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    30
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2003
    Messages : 30
    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