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 :

Petite question sur la commande system()


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut Petite question sur la commande system()
    Bonjour, j'aurais une petite question à propos de la commande system.

    J'aimerais lancer un programme avec un logiciel spécifique!
    J'ai eu dabord le probléme des espace dans le chemin de mon programme ou de mon fichier, puis j'ai trouvé ici qu'il fallait mettre des \"
    j'ai donc quelque chose comme ça pour lancer mon progr

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	system("\"C:\\Program Files\\Media Machines\\Flux1\\FluxPlayer.exe\"");
    Cela marche impec. Cependant j'aimerais directement lancer le fichier correspondant, le pbm c que la commande sous dos pour le faire c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "C:\Program Files\Media Machines\Flux1\FluxPlayer.exe" "c:\dossier fini\fichier.ext"
    Cela marche en commande dos, je me dis donc que la commande system correspondante devrais être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	system("\"C:\\Program Files\\Media Machines\\Flux1\\FluxPlayer.exe\" \"c:\\dossier fini\\fichier.ext\"");
    Mais là ça ne marche pas, il s'arréte de nouveau au premier espace de "Program" et me dit que le chemin est introuvable, je ne comprends pas vraiment.

    Merci de votre aide.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Tu as un espace en trop avant le C:\\dossier.

    Essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("\"C:\\Program Files\\Media Machines\\Flux1\\FluxPlayer.exe\" \"C:\\dossier fini\\fichier.ext\"");

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Désoler, c'est que je l'ai tapé a la main de tête, le probléme est le même, je n'ai pas d'espace en temps normale.

    La réponse de mon compilateur : 'C:\Program' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes.

    Il y a donc un autre problème.

    Merci cependant de ton aide.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 376
    Points
    376
    Par défaut
    Alors dans ce cas, une solution est de passer par les noms de fichiers DOS 8.3:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("C:\\Progra~1\\MediaM~1\\Flux1\\FluxPlayer.exe  \"C:\\dossier fini\\fichier.ext\"");

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup, ça marche niquel comme ça.

    Encore une petite question, est ce qu'il existe une fonction qui permetterais de transformer un chemin classique en chemin MSDOS avec des ~?

    Sinon est ce que quelqu'un sait comment récuperer le chemin windows de l'application éxécuter en C.

    Merci encore

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Rien de standard, mais sous Windows il y a GetShortPathName().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par johnnydepp
    Sinon est ce que quelqu'un sait comment récuperer le chemin windows de l'application éxécuter en C.
    Pas compris, tu veux le chemin de l'application que tu veux executer ?

    Je pense pas que ce soit possible. Peut-etre que certaines applications stockent leur chemin dans le registre...
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Merci pour toutes ces réponses.

    En faite, je voulais le chemin de l'application C que je développe, l'endroit ou se trouve le .exe car j'essaye du faire du relatif avec la commande system pour appeler un programme libre livré avec mon application, mais ça ne marche pas. Du coup je me suis dit autant récupérer le chemin de l'application et faire de l'absolue !

    Pour l'instant je récupére mon chemin avec argv[0], est ce que la méthode est bonne? Sinon si vous savez comment faire du relatif avec la commande system?

    Une derniére chose, je n'ai pas trouver de solution pr mettre le chemin au format MSDOS en C, la fonction GetShortPathName() c'est plutôt du C++. Il est préférable que mon application soit entiérement en C.

    Merci déjà de vos réponses et je l'éspére de vos futures réponses.

    Bonne nuit

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par johnnydepp
    ... Sinon si vous savez comment faire du relatif avec la commande system?
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system( "../../../toto/tata/titi");
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    GetShortPathName() est une fonction C.
    Une fonction non-standard (API Windows), mais parfaitement appelable en C.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  11. #11
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Médinoc
    GetShortPathName() est une fonction C.
    Euh, ça, on en sait rien...
    Une fonction non-standard (API Windows), mais parfaitement appelable en C.
    Là, on est d'accord.
    Pas de Wi-Fi à la maison : CPL

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Oui elle à l'aire addaptable en C, le pbm c'est que ce n'est pas des char * quelle demande en entrée mais des LPCWSTR

    warning C4133: 'fonction' : types incompatibles - de 'char [21]' à 'LPCWSTR'

    Du coup ça ne marche pas.

    Un coup de main?

    Merci encore pour toutes ces réponses

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Pour être précis, GetShortPathName() demande des LPCTSTR, ce qui correspond à un TCHAR const *
    Si tu ne passes que des chaînes littérales, tu peux utiliser la macro TEXT() autour de ces chaînes.
    Sinon, en dernier recours, tu peux forcer l'utilisation de la version char de GetShortPathName() : GetShortPathNameA().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Et non j'utilise une variable char * donc je peut pas utiliser de macro. Mais du coup avec GetShortPathNameA ça ne passe pas non plus. Il y a bien plus de warning mais la fonction à l'air de ne rien faire?

    Sinon pour le relatif dans la commande system, il me dit que le . n'est pas reconnu ....

  15. #15
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par johnnydepp
    Sinon pour le relatif dans la commande system, il me dit que le . n'est pas reconnu ....
    Tu as bien mis "/" et non "\" ?

    Tu peux utiliser \ sous Windows, mais il faut alors utiliser le caractère d'échappement (qui se trouve être \), d'où : "\\".
    Pas de Wi-Fi à la maison : CPL

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Le chemin d'accés spécifié est introuvable...

    C'est bien a partir du repertoire debug ou il y a Application.exe?

  17. #17
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Les chemins relatifs sont par rapport au répertoire courant.
    • Sous Visual, ce répertoire est par défaut celui du projet (et non pas Debug ou Release)
    • Sous l'explorateur Windows, c'est le répertoire où tu te trouves, donc généralement celui de l'exe (pour que tu puisses cliquer dessus).
    • Sous l'invite de commandes, ça peut être n'importe quoi.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Ca marche, je l'ai mis dans le projet!
    Une derniére question est mon pbm sera complétement résolu.
    Une fois que mon projet sera terminé, et que je passerais mon programme en release, je n'aurais plus mon rep de projet, ou devrait-je mettre mon application a lancer avec la commande system?

    Merci encore pour votre aide

    Bonne après midi

  19. #19
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par johnnydepp
    Ca marche, je l'ai mis dans le projet!
    Une derniére question est mon pbm sera complétement résolu.
    Une fois que mon projet sera terminé, et que je passerais mon programme en release, je n'aurais plus mon rep de projet, ou devrait-je mettre mon application a lancer avec la commande system?

    Merci encore pour votre aide

    Bonne après midi
    Ben dans le meme repertoire que ton appli. Tu fais un installer qui met tout au bon endroit.
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 26
    Points : 10
    Points
    10
    Par défaut
    Merci

    Résolu

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

Discussions similaires

  1. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 09h40
  2. [Visuel XP] Petite question sur le theme XP...
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 12
    Dernier message: 20/01/2005, 14h41
  3. petite question sur le composant IBX ...
    Par vbcasimir dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/01/2005, 10h33
  4. Réponses: 3
    Dernier message: 08/12/2004, 13h58
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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