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.
olixelle
Messages postés506Date d'inscriptionvendredi 30 juillet 2004StatutMembreDernière intervention 3 mars 20082 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
julien3d
Messages postés7Date d'inscriptionmercredi 23 novembre 2005StatutMembreDerniè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"
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 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