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 :

Chercher un .exe


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Points : 67
    Points
    67
    Par défaut Chercher un .exe
    Bonjour, je voudrais lancer un .exe dans mon programme. Donc j'ai deja trouver la commande ShellExecute() ou CreateProcess() mais ce que j'aimerai c'est que le programme trouve lui-meme acad.exe (c'est le logiciel a lancer) et il devrai se trouver principalement dans Programm Files (mais peut varier)

    Comment faire?

    Merci

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Il faut explorer les sous-dossiers, soit avec l'API de Windows, soit avec quelque chose comme boost.file_system

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Points : 67
    Points
    67
    Par défaut
    Peux tu me donner un peu plus de détails sur l'API de windows que je puisse effectué des recherches stp ?

    Faut-il utiliser un #include spécial pour l'API de windows ?

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Malheureusement, je ne connais pas trop, mais sur le site de la MSDN, tu trouveras sans pb.

  5. #5
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Fiquet
    - FAQ SDL
    - FAQ C++

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut

  7. #7
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Si c'est AutoCad que tu recherches, cherche la valeur "AcadLocation" dans le registre.

    HKEY_CURRENT_USER\Software\Autodesk\AutoCAD
    HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD
    L'itération est humaine; la récursion, divine.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Points : 67
    Points
    67
    Par défaut
    D'accord la valeur "AcadLocation" donne le chemin ou se trouve l'executable! merci. Comment faire pour récupérer une valeur du registre? Puis-je la stocké dans une variable ?

    j'ai trouver ça mais j'utilise dev-cpp et il n'y a pas la bibliothèque registry.hpp

  9. #9
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Citation Envoyé par leroidje
    D'accord la valeur "AcadLocation" donne le chemin ou se trouve l'executable! merci. Comment faire pour récupérer une valeur du registre? Puis-je la stocké dans une variable ?
    Oui, pour ça il faut ouvrir la clé où ce trouve "AcadLocation" avec RegOpenKeyEx et lire la valeur avec RegQueryValueEx.
    L'itération est humaine; la récursion, divine.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Points : 67
    Points
    67
    Par défaut
    Je comprend pas très bien comment marche ces fonctions...

  11. #11
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Tu as un exemple ici.
    L'itération est humaine; la récursion, divine.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Points : 67
    Points
    67
    Par défaut
    est ce possible de récupéré la valeur de AcadLocation (qui est une chaine) la mettre dans une variable et utilisé cette variable + acad.exe dans la fonction ShellExecute

    Je sais pas si j'ai été clair...

  13. #13
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    As-tu regardé le lien plus haut ? c'est clairement ce que tu veux.
    L'itération est humaine; la récursion, divine.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Points : 67
    Points
    67
    Par défaut
    D'accord, je vais essayé de comprendre l'exemple que tu m'as donné...meme si a première vue j'ai pa tout pigé.
    Merci pour ton aide

  15. #15
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Citation Envoyé par leroidje
    D'accord, je vais essayé de comprendre l'exemple que tu m'as donné...meme si a première vue j'ai pa tout pigé.
    Merci pour ton aide
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int GetRegistryLocalMachine( const char* szkey, const char* szname, void* pval )
    • szkey : Adresse de la clé où ce trouve la valeur à chercher.
    • szname: Nom de la valeur.
    • pval : Pointeur vers une chaîne où sera copié la valeur.
    L'itération est humaine; la récursion, divine.

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Points : 67
    Points
    67
    Par défaut
    Donc pour utiliser cette fonction je dois faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void* pval;
    GetRegistryLocalMachine( "Software\\Autodesk\\AutoCAD","AcadLocation",pval)
    alors pval contient la chaine c:\programm file\autodesk map 3d 2006 ?

  17. #17
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Citation Envoyé par leroidje
    Donc pour utiliser cette fonction je dois faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void* pval;
    GetRegistryLocalMachine( "Software\\Autodesk\\AutoCAD","AcadLocation",pval)
    Non plutôt :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char chemin[256];
    GetRegistryLocalMachine( "Software\\Autodesk\\AutoCAD","AcadLocation", chemin)
    Citation Envoyé par leroidje
    alors pval contient la chaine c:\programm file\autodesk map 3d 2006 ?
    Oui, sans oublier de lui ajouter "\\acad.exe".
    L'itération est humaine; la récursion, divine.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Points : 67
    Points
    67
    Par défaut
    Comment faire pour concaténé chemin avec "\acad.exe" car j'ai essayé ça:
    et ça ne marche pas (je me souviens jamais des concaténation)

    J'ai essayé ça aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *exe = "\acad.exe";
    strcat(chemin,exe);
    Mais ca me coupe "\a"

  19. #19
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Citation Envoyé par leroidje
    J'ai essayé ça aussi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char *exe = "\acad.exe";
    strcat(chemin,exe);
    Mais ca me coupe "\a"
    Il faut doubler le backslash.

    strcat( chemin, "\\acad.exe" );
    L'itération est humaine; la récursion, divine.

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 156
    Points : 67
    Points
    67
    Par défaut
    ça marche!!!!
    Un énorme merci pour ton aide

Discussions similaires

  1. creation d un fichier jar ou .exe en java
    Par sadjia dans le forum JBuilder
    Réponses: 13
    Dernier message: 13/12/2002, 16h01
  2. [Kylix] Un exe kylix es t'il independant ?
    Par mailstef dans le forum EDI
    Réponses: 2
    Dernier message: 19/11/2002, 22h01
  3. Comment créer et executer un .EXE
    Par maher12 dans le forum Flash
    Réponses: 3
    Dernier message: 26/09/2002, 08h33
  4. Format d'un exe pour DOS et pour Windows
    Par Alfhiger dans le forum Assembleur
    Réponses: 4
    Dernier message: 12/06/2002, 11h57
  5. Quel désassembleur/assembleur pour un exe Windows ?
    Par Anonymous dans le forum x86 32-bits / 64-bits
    Réponses: 6
    Dernier message: 17/04/2002, 10h59

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