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

Langage Delphi Discussion :

Comment récuperer le chemin d'un exécutable ?


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bigey3
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Par défaut Comment récuperer le chemin d'un exécutable ?
    salut

    je souhaiterais exécuter une application à partir de delphi.
    le soucis c'est que je souhaiterais récuperer automatiquement le chemin de localisation de l'application et affecter le chemin à la fonction ShellExecute.

    un coup de pouce
    merci

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Salut,

    Si je comprends bien, tu souhaites scanné le Disque Dur afin de rechercher le chemin de l'exécutable à lancer avec ShellExecute car celui ci peut être n'importe ou, c'est ça ?

  3. #3
    Membre Expert Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Par défaut
    recherche dans la faq:
    ExtractFilePath(Application.ExeName);

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut

    Entre la réponse d'Ero-Sennin et celle d'Edam, effectivement on peut se poser la question.

    Veux-tu récupérer le chemin de ta propre application ou celle que tu vas appeler via ShellExecute ?

    @+

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Salut,

    ExtractFilePath(Application.ExeName); ne renvoie que le chemin de l'application à partir de laquelle tu veux récuperer le chemin de localisation de l'autre application qu'il veut lancer avec ShellExecute.

    Et comme dit Ero-sennin si tu ne connais que le nom-court de cette autre application il ne te reste plus qu'à scanner le disque dur pour en trouver le chemin avec FindFirst et FindNext.

    A+

    EDIT de 15h07 : voici du code pour scanner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Function RechercheFichier(Nom,Chemin : String) : String;
    Var      SR : TSearchRec; R : Integer; S : String;
    Begin    If FileExists(Chemin+Nom) Then
             Begin Result:=Chemin+Nom; EXIT; End;
             R:=FindFirst(Chemin+'*.*',16,SR);
             While R=0 Do
             Begin If (SR.Name<>'.') And (SR.Name<>'..') Then
                   Begin S:=RechercheFichier(Nom,Chemin+SR.Name+'\');
                         If S <>'' Then
                         Begin Result:=S; EXIT; End;
                   End;
                   R:=FindNext(SR);
             End;
             Result:='';
    End;
     
    // Utilisation :
     
    procedure TfrmTrImages.bCheminClick(Sender: TObject);
    begin     ShowMessage(RechercheFichier('mem12u.exe','C:\'));
    end;
    A+

    EDIT de 15h18: Un oubli : pour récupérer le chemin seul il faut bien entendu faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CheminDeLocalisation:=ExtractFilePath(RechercheFichier('NomCourt.exe','C:\'));
    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  6. #6
    Membre confirmé Avatar de bigey3
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Par défaut tout à fait ero-sennin
    salut

    je ne sais pas à priori où se trouve le chemin mais je connais le nom de l'application à exécuter

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Salut,

    On a certainement rédigé au même moment tu peux trouver ce chemin comme indiqué dans mon message précédent.

    A+
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  8. #8
    Membre confirmé Avatar de bigey3
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2007
    Messages : 124
    Par défaut ok gilbert
    juste une dernière choz,
    serait t-il possible de faire cette recherche sur une autre partition à la fois(i.e sur le c: et sur le d.


    a+

  9. #9
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Re,

    Je me pose une question ... N'est il pas possible de lire le chemin dans la base de registre... Je dis celà car j'avais fait un petit programme pour rechercher la présence ou non d'un exécutable ... et j'avais eu un soucis. J'ai téléchargé PSPad et je l'avais renommé en PSPad.exe pour dire de le nommé explicitement et je l'avais mis dans mon dossier utilitaires (dossier où je stocke tous les outils utile). En utilisant la fonction de recherche, j'avais bien le chemin de l'exécutable mais malheureusement, j'avais le chemin du PSPad.exe (installeur) et non le PSPad.exe qui sert au lancement du programme. J'avais donc cherché dans la base de registre pour voir si il n'y avait pas une clé qui contiendrait le chemin de l'exécutable et en cherchant un peu, j'ai trouvé. Donc dans mon cas, je test juste si une clé existe, si oui, je lis sa valeur, si la clé n'existe pas, c'est que le programme n'est pas installé ...

    Pour info, c'était cette clé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HKEY_CURRENT_USER\SOFTWARE\PSPad\PSPadPath
    Je ne sais pas si celà sera applicable dans ton cas ...
    A voir

  10. #10
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    Salut,

    Bigey3 demande :juste une dernière choz,
    serait t-il possible de faire cette recherche sur une autre partition à la fois(i.e sur le c: et sur le d.
    ... mais bien sûr, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        ...
        CheminDeLocalisation:='';
        CheminDeLocalisation:=ExtractFilePath(RechercheFichier('NomCourt.exe','C:\'));
        if CheminDeLocalisation='' 
        then CheminDeLocalisation:=ExtractFilePath(RechercheFichier('NomCourt.exe','D:\'));
        ...
    A+

    EDIT : si l'astuce d'Ero-sennin marche cela sera certainement plus rapide que d'avoir à scanner le disque par contre j'ai pas pigé comment utiliser son astuce.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/08/2013, 22h59
  2. Réponses: 2
    Dernier message: 02/03/2006, 10h09
  3. Comment récuperer le chemin des mails reçus de Outlook ?
    Par chleuh dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 16/08/2005, 16h44
  4. Comment gérer plusieurs icones dans son exécutable ?
    Par declencher dans le forum Langage
    Réponses: 5
    Dernier message: 15/10/2003, 10h49
  5. Comment subsituer un chemin par un autre dans un réseau ?
    Par Baillard dans le forum Développement
    Réponses: 3
    Dernier message: 11/08/2002, 14h01

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