Lister les programmes installés sur la machine

diz9 Messages postés 5 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 7 septembre 2004 - 6 sept. 2004 à 11:39
diz9 Messages postés 5 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 7 septembre 2004 - 7 sept. 2004 à 10:21
Salut à tous,
C'est la première fois que je poses une question sur ce site, malgrès des visites fréquentes et surtout de nombreuses réponses trouvées.

Je soumet un petit soucis auquel je n'ai, pour la première fois!, pas trouvé de réponse.

Je cherche à récupérer la liste des programmes installés sur la machine. En particulier le .exe qui permet de le lancer.

Dans le but de faire une liste de fichiers (filelistbox) qui permet lorsque l'on clique sur un élément, de l'ouvrir via la fonction shell.
Pour cela il faut préciser le programme avec lequel il sera ouvert.

A moins que quelqu'un ai une solution pour l'ouvrir avec le programme par défaut.

Merci et a+

5 réponses

cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
6 sept. 2004 à 11:50
Il te faut lister une partie de ta base de Registre..

HKEY_LOCAL_MACHINE\SOFTWARE\...

It@li@
0
diz9 Messages postés 5 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 7 septembre 2004
6 sept. 2004 à 12:14
C'est exctement dans ce sens que mes recherches s'orientent
J'ai pas encore trouvé de solution mais je sens que cela vient :)
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
6 sept. 2004 à 14:36
Pour connaitre l'exécutable associé à un fichier, j'ai retrouvé un truc dans mes cartons :

Const MAX_FILENAME_LEN = 255

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()
Dim i As Integer
Dim Buffer As String
Dim Fichier As String

  Fichier = "C:\temp\bd1.mdb"

  'Test si le fichier existe  If Dir(Fichier) "" Or Fichier "" Then
    MsgBox "Fichier non trouvé !", vbCritical
    Exit Sub
  End If
  
  'Intitialisation du buffer avec des espaces
  Buffer = Space$(MAX_FILENAME_LEN)
  
  ' Recherche de l'exécutable associé au fichier
  i = FindExecutable(Fichier, vbNullString, Buffer)
  
  If i > 32 Then
    ' Pour éviter que ça n'affiche que c:\program
    ' au lieu de c:\c:\program files\....
    Buffer = Replace(Buffer, Chr$(0), " ")
    ' Pour supprimer les éventuels paramètres
    ' comme avec ..\..\msaccess.exe /NOSTARTTUP ...
    Buffer = Left$(Buffer, InStr(UCase(Buffer), "EXE") + 2)
    ' Affichage du chemin et nom de l'exe
    MsgBox Buffer
  Else
    MsgBox "Pas d'exécutable associé !"
  End If
  
End Sub


Essaie déjà ça, si ça peut te convenir.

Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0
drummondfolies Messages postés 5 Date d'inscription lundi 30 août 2004 Statut Membre Dernière intervention 6 septembre 2004
6 sept. 2004 à 23:25
ben y a des belles facons de le faire mais si tu veux trouver l'exe la,
la premiere c'est en allant vers le panneau de configuration et cherche le programme installé
une autre va sur le registre en cliquant sur le menu demarrer et en tapant Regedit et la va sur l'emplacement
HKEY_LOCAL_MACHINE\SOFTWARE
et l'exe est representéé comme donnée (oublie po ca la)
Drummondfolies
0

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

Posez votre question
diz9 Messages postés 5 Date d'inscription lundi 17 mars 2003 Statut Membre Dernière intervention 7 septembre 2004
7 sept. 2004 à 10:21
Initialement je cherchai le moyen de lister le applications existantes pour choisir avec quel programme ouvrir un fichier donné

Bah finalement, ShellExecute sera plus adapté que Shell.
Il me permet d'appeller le programme par défaut.

Donc c'est tout bon

Merci pour votre aide 8-)
0
Rejoignez-nous