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
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
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 ?
recherche dans la faq:
ExtractFilePath(Application.ExeName);
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 ?
@+
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 scannerA+
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;
EDIT de 15h18: Un oubli : pour récupérer le chemin seul il faut bien entendu faire:A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part CheminDeLocalisation:=ExtractFilePath(RechercheFichier('NomCourt.exe','C:\'));![]()
salut
je ne sais pas à priori où se trouve le chemin mais je connais le nom de l'application à exécuter
Salut,
On a certainement rédigé au même moment tu peux trouver ce chemin comme indiqué dans mon message précédent.
A+![]()
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+
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é :
Je ne sais pas si celà sera applicable dans ton cas ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part HKEY_CURRENT_USER\SOFTWARE\PSPad\PSPadPath
A voir![]()
Salut,
... mais bien sûr, comme ceci :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.A+
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:\')); ...
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.
Partager