Pb : lancer une application sans en connaître le chemin

julien3d Messages postés 7 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 5 mai 2006 - 16 févr. 2006 à 13:08
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 16 févr. 2006 à 14:37
Bonjour,
Je voudrais lancer l'application winzip32.exe à partir d'un shell :

monfichier = "C:\Monfichier.zip"
destination="C:"
commande = "winzip32.exe -e -o " & monfichier & destination
Shell (commande)

Evidemment, mon prog ne sais pas où se trouve winzip32.exe donc il me génère une erreur "fichier introuvable".
Je voulais donc savoir si, d'une manière générale, il est possible de récupérer le chemin d'une application installée sur le système, et éventuellement de savoir si elle est, ou n'est pas, installée.

5 réponses

olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
Modifié par Jeff le 29/07/2013 à 10:59
ben ya plusieurs possibilités:
1. tu inclus l'appli dans ton programme (prend une version freeware style 7-zip ou qzip)
2. tu regardes dans la base de registre
3. tu fais une recherche récursive pour chercher l'appli

Rollerman
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 févr. 2006 à 13:36
salut,

il faut utiliser l'API ShellExecuteEx pour lancer un programme à partir de l'extension qui lui est associée.



++

PCPT [AFCK]
0
julien3d Messages postés 7 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 5 mai 2006
16 févr. 2006 à 13:58
Rollerman : tes possibilités sont intéressantes mais je ne sais pas comment les mettre en oeuvre. Mais bon, te bile pas, je vais chercher sur les pistes que tu m'as donné je t'en remercie.

PCPT : cette API à l'air pas mal mais c'est pas tout à fait ce que je veux car elle ne me permet pas d'envoyer des arguments à l'appli comme dans l' exemple "winzip32.exe -e -o"
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 févr. 2006 à 14:30
ok, dans ce cas en effet, il faut passer par le registre....

regarder si "zip" est associé à winzip.

si c'est la cas, lire la clé d'install, y ajouter les paramètres et le nom du fichier à ouvrir.

sinon, celui par défaut et le fichier, par simple shell
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
16 févr. 2006 à 14:37
Effectivement, ShellExecute() ne convient pas dans ce cas.
Il faut que tu utilises l'API FindExecutable() qui te retourne le chemin complet d'un EXE à partir d'un fichier qui lui est associé (si c'est bien le cas).
En voici un exemple issu de l'APIGuide

Const MAX_FILENAME_LEN = 260
Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, ByVal lpDirectory As String, ByVal lpResult As String) As Long
Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim i As Integer, s2 As String
Const sFile = "C:\Windows\Readme.txt"

'Check if the file exists
If Dir(sFile) "" Or sFile "" Then
MsgBox "File not found!", vbCritical
Exit Sub
End If
'Create a buffer
s2 = String(MAX_FILENAME_LEN, 32)
'Retrieve the name and handle of the executable, associated with this file
i = FindExecutable(sFile, vbNullString, s2)
If i > 32 Then
MsgBox Left$(s2, InStr(s2, Chr$(0)) - 1)
Else
MsgBox "No association found !"
End If
End Sub

CR
0
Rejoignez-nous