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

Access Discussion :

Récupération de la liste des logiciels installés sur poste


Sujet :

Access

  1. #1
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Points : 30
    Points
    30
    Par défaut Récupération de la liste des logiciels installés sur poste
    Bonjour,

    Je cherche à interroger la base de registre pour en extraire la liste des logiciels installés ainsi que le chemin complet vers leur exécutables respectif depuis Access 97.

    A priori, il faut utiliser la référence "Windows script host object model", mais comme c'est la base de registre que je veux interroger, je voudrais pas faire de bêtises ....

    Avez vous déjà fait ca ? Pourriez vous me donner des codes exemples et des explications ?


    Isa911

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 171
    Points
    12 171
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Dans la mesure où les installations autant que les désinstallations ont été menées correctement (pas de suppressions sauvages), tu peux lire* le registre à partir de la clé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
    De là, il te faut énumérer les sections et pour chaque section lire le contenu des valeurs DisplayName pour le nom et UninstallString pour le chemin (qu'il faudra parfois décomposer).

    Il sera également judicieux d'ignorer toutes les sections commençant par KB (par exemple KB917537) dans ta boucle For/Next dans le sens où elles représentent les MAJ Windows (à moins qu'elles t'intéressent)...

    Pour ce qui est du code de lecture du Registre, tu as de nombreux exemples dans les tutoriels et dans la FAQ.

    Argy

    * Pas de danger, c'est de la lecture
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    cette adaptation permet de lister les logiciels installés depuis Windows Installer
    (testé avec Office2002 et WindowsXP)


    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Sub Test()
    'liste les logiciels installés depuis Windows Installer
    '
    'source :
    'http://msdn.microsoft.com/library/default.asp?url=/library
    '/en-us/wmisdk/wmi/win32_product.asp
    '
    Dim objFSO As Object, objWMIService As Object
    Dim colSoftware As Object, objSoftware As Object
    Dim strComputer As String
     
    Set objFSO = CreateObject("Scripting.FileSystemObject")
     
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colSoftware = objWMIService.ExecQuery _
        ("Select * from Win32_Product")
     
    For Each objSoftware In colSoftware
        Debug.Print "Caption : " & objSoftware.Caption
        Debug.Print "Description : " & objSoftware.Description
        Debug.Print "IdentifyingNumber : " & objSoftware.IdentifyingNumber
        Debug.Print "InstallDate2 : " & objSoftware.InstallDate2
        Debug.Print "InstallLocation : " & objSoftware.InstallLocation
        Debug.Print "InstallState : " & objSoftware.InstallState
        Debug.Print "Name : " & objSoftware.Name
        Debug.Print "PackageCache : " & objSoftware.PackageCache
        Debug.Print "SKUNumber : " & objSoftware.SKUNumber
        Debug.Print "Vendor : " & objSoftware.Vendor
        Debug.Print "Version : " & objSoftware.Version
        Debug.Print " "
        Debug.Print "-----"
    Next
    End Sub

    bon week end
    michel

  4. #4
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    argyronet:
    Avec cette technique, j'ai bien le nom des logiciels avec "DisplayName" mais "UninstallString" me donne le chemin du fichier à lancer pour desinstaller, ce qui me faudrait c'est le chemin de l'executable du logiciel à lancer ...

  5. #5
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    SilkyRoad:
    Avec cette méthode, il me manque des logiciel comme les adobe par exemple et je ne sais pas non plus ou chercher le chemin complet vers le fichier exécutable du logiciel concerné ...

    Une autre idée ?

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 171
    Points
    12 171
    Billets dans le blog
    5
    Par défaut
    Oui, je suis d'accord avec toi...
    Mais quel est l'objectif final de ta demande.
    Est-ce que c'est de vérifier le présence d'une application ou bien c'est de lancer cette dernière avec un fichier particulier.
    Il y a différentes façons de procéder si c'est ce dernier cas.

    J'ai vu la procédure de SilkyRoad et je sais qu'elle ne renvoie pas tout ce que j'ai sur mon ordi (- de 50%) ; toutefois, je ne sais pas si cela te suffit.
    De plus la valeur InstallLocation n'est pas systématiquement renseignée que ce soit par ma suggestion ou celle de Michel.

    Donc...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  7. #7
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    En fait, je cherche les chemins des exécutables pour plusieurs raisons.
    Tout le problème vient du fait que j'utilise une base de données Access 97 qui pilote des documents émanant de différents logiciels (Word 97, Excel 97, Outlook 97 et 2000, Acrobat 5.0, 6.0, 7.0, Autocad LT97, R14, Catia V5 R16, etc ...).
    Pour certains de ces logiciels je suis obligée de lancer un shell, avec la cible de l’exécutable, et un fichier extérieur qui envoi des commandes au logiciel ex avec Autocad LT97 qu'on ne peut pas attaquer en VB.
    D'autres comme Adobe si j'utilise un FollowHyperlink, ouvre bien le fichier, mais les modifications faites ne sont pas enregistrées.
    Pour CATIA, il ne faut pas seulement lancer l’exécutable mais carrément une commande plus complexe, sinon, cela ne charge pas le profil de l'utilisateur ...
    Sans compter ceux qui sont installé sur C, D ou E et les chemins personnalisés sur chaque poste...
    Actuellement, j'ai une table que je met à jour manuellement avec les chemins des exécutables sur chaque poste pour bien prendre la bonne cible, mais cette méthode est contraignante et cherche à automatiser la recherche...
    Voila …

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 171
    Points
    12 171
    Billets dans le blog
    5
    Par défaut
    Tiens essaye ce code... et dis moi.
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Private Declare Function FindExecutable Lib "shell32.dll" _
     Alias "FindExecutableA" (ByVal lpFile As String, _
    ByVal lpDirectory As String, ByVal lpResult As String) As Long
    Private Const MAX_FILENAME_LEN = 260
     
    Private Sub TEST()
    Dim strApplicationFilename As String
    Dim strMyFile As String
    Dim strFullExecutionPath As String
    Dim lngShell As Double
     
        strMyFile = "C:\MyPDFDocument.pdf"
        strApplicationFilename = GetApplicationFilename(strMyFile)
        If Len(strApplicationFilename) Then
            If MsgBox("L'application associé a été trouvée, il s'agit de :" & _
    vbCrLf & strApplicationFilename & vbCrLf & vbCrLf & "Voulez-vous ouvrir '" & _
    strMyFile & "' ?", 36) = 6 Then
                strFullExecutionPath = strApplicationFilename & " " & strMyFile
                lngShell = Shell(strFullExecutionPath, 3)
            End If
        Else
            MsgBox "Aucune application n'est installée sur le poste pour les _
    des fichiers du type '" & strMyFile & " !", 48
        End If
    End Sub
     
     
    Private Function GetApplicationFilename(ByVal ApplicationFilename As String) _
    As String
    Dim lngSuccess As Integer, strBuffer As String
    Dim strExecutablePath As String
     
        strExecutablePath = vbNullString
        If Dir(ApplicationFilename) = vbNullString Or Len(ApplicationFilename) = 0 Then
        Else
            strBuffer = String(MAX_FILENAME_LEN, 32)
            lngSuccess = FindExecutable(ApplicationFilename, vbNullString, strBuffer)
            If lngSuccess > 32 Then
                strExecutablePath = Left$(strBuffer, InStr(strBuffer, Chr$(0)) - 1)
            End If
        End If
        GetApplicationFilename = strExecutablePath
    End Function
    Créé un fichier PDF "MyPDFDocument.pdf" bidon sur C:\ pour tester...
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  9. #9
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    Ma foie ca marche, faut que j'essaye sur un poste Catia, la risque de se compliquer...

  10. #10
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    mon pressentiment était bon, pour Catia, ca me renvoi une .dll et non l'.exe....
    cette installation est tellement particulière, je sens que je vais m’y énerver un moment …

  11. #11
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 171
    Points
    12 171
    Billets dans le blog
    5
    Par défaut
    faut pas !!!!
    Bon, donne nous un exemple de ligne de commande de ta Catia...
    Quels sont les types de fichiers associés à cette Catia, enfin comment tu les ouvres à la mano...?

    Ca doit pouvoir se faire... Enfin j'espère.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  12. #12
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    La commande qui serait bien à récupérer c'est celle du raccourci cad :
    C:\ds\B16\intel_a\code\bin\CATSTART.exe -run "CNEXT.exe" -env CATIA_P1.V5R16.B16 -direnv "C:\DS\B16\CATEnv" -nowindow

  13. #13
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    Avec la fonction, ca me donne : C:\WINNT\system32\cryptext.dll

  14. #14
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 171
    Points
    12 171
    Billets dans le blog
    5
    Par défaut
    Dans le raccourci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\ds\B16\intel_a\code\bin\CATSTART.exe  -run "CNEXT.exe" -env _
    CATIA_P1.V5R16.B16 -direnv "C:\DS\B16\CATEnv" -nowindow
    qui le génère à la base ?

    CATIA_P1.V5R16.B16 est-il le nom du fichier spécifique à ouvrir enfin, comment as-tu initialisé strMyFile pour qu'il te renvoie C:\WINNT\system32\cryptext.dll ?

    As-tu mis ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strMyFile="CATIA_P1.V5R16.B16"
    Si oui, tu n'as qu'à emettre une condition particulière pour ce type d'extension, en l'occurence .b16 et construire la chaîne de commande avec le Shell :
    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
    Private Function GetCatiaCommand(ByVal FileName As String, ByVal CatiaDrive As _
        String) As String
    Dim strCommand As String
    Const INTEL_A As String = "DS\B16\intel_a\code\bin\"
    Const CAT_ENV As String = "DS\B16\CATEnv"
    Const CATSTART_EXE As String = "CATSTART.exe"
    Const CNEXT_EXE As String = "CNEXT.exe"
    Const ARG_RUN As String = " -run "
    Const ARG_ENV As String = " -env "
    Const ARG_DIRENV As String = " -direnv "
    Const ARG_NOWIN As String = " -nowindow"
     
      strCommand = CatiaDrive & INTEL_A & CATSTART_EXE & ARG_RUN & """" & CNEXT_EXE _
          & """" & ARG_ENV & FileName & ARG_DIRENV & """" & CatiaDrive & CAT_ENV & """" _
          & ARG_NOWIN
      GetCatiaCommand = strCommand
    End Function
     
    Sub TEST()
      Debug.Print GetCatiaCommand("CATIA_P1.V5R16.B16", "C:\")
    End Sub
    et tu fais un Shell() du résultat...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  15. #15
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    L’exécutable qui lance le logiciel sans les config perso, c'est "C:\ds\B16\intel_a\code\bin\CATSTART.exe"
    Sachant que B16 est la version dans cet exemple mais l'install n'est pas identique sur chaque poste (sur un autre poste, j'ai catiav5r16).... et que l'on peu garder plusieurs versions sur le même poste, mais que ce qui m’intéresse c'est juste la dernière (on va se limiter ...)
    Les fichiers les plus courants ouvert avec Catia ont des extensions .CATDrawing, .CATPart et .CATProduct.
    Sachant que nous recevons des mises à jours et des évolutions pour ce logiciel 2-3 fois par ans, ce serait bien de trouver un automatisme ...
    Je me demande si ca serait pas plus simple de chercher les raccourcis présent dans le bureau pour tout ce qui s'appelle "CATIA" ?

  16. #16
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 171
    Points
    12 171
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par isa911
    Je me demande si ca serait pas plus simple de chercher les raccourcis présent dans le bureau pour tout ce qui s'appelle "CATIA" ?
    Mouis pourquoi pas...
    C'est peu "mgrffprrfprr" ton Catia... Non ?
    En gros, tu veux créer un automate de x tâches sur les postes en question à l'insu des utilisateurs de chacun d'eux via une interface issue d'une appli Access, c'est ça ???
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  17. #17
    Nouveau membre du Club

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Points : 30
    Points
    30
    Par défaut
    Oui, un peu ...

    En fait, ma base Access est un mix de SGDT et de PDM.
    L'utilisateur créé des documents dans la base de données, ca lance la création des documents avec les logiciels cités précédemment et les renseigne en partie puis les laisse à disposition de l'utilisateur pour continuer les autres manipulations (dessins tech sur CAO type Catia par ex).
    Ils faut donc qu'il soit ouvert en mode normal pour qu'ils aient accès a toutes les fonctions de chaque logiciels et de préférence leurs environnements propres.
    La base gère aussi la validation des documents et transforme tout en .pdf et met des renseignements de validation sur chaque document, cette partie la n’est pas visible de la plupart des utilisateurs.
    En utilisant FollowHyperlink je n'ai pas tout, j'utilise selon les besoins des GetObject ou des Shell selon ce qu'il y a faire et les fonctions à lancer et surtout de leur comptabilité OLE et VB...

    Une usine a gaz maison quoi ...

  18. #18
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 25
    Points
    25
    Par défaut Et pour les raccourcis ?
    Pour moi ça marche comme je le veux à une exception près. Avec FollowHyperlink ouvre aussi les raccourcis (*.lnk).

    Y-a-t-il une solution ?

  19. #19
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 25
    Points
    25
    Par défaut Ma réponse pour l'ouverture d'un fichier même si l'on a que le raccourci
    Uniquement testé sur Windows 2000.
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    Private Declare Function FindExecutable Lib "shell32.dll" _
     Alias "FindExecutableA" (ByVal lpFile As String, _
    ByVal lpDirectory As String, ByVal lpResult As String) As Long
    Private Const MAX_FILENAME_LEN = 260
     
    'Ouvre un fichier avec l'application installée dans Windows
    'Prend en compte les raccourcis sur les fichiers
     
    Public Sub ouvreFichierAvecApplication(strMyFile As String)
    Dim strApplicationFilename As String
    Dim strFullExecutionPath As String
    Dim lngShell As Double
     
        'Le fichier est-il un lien ?
        If (Right(strMyFile, 3) = "lnk") Then
            Set WshShell = CreateObject("WScript.Shell")
            strDesktop = WshShell.SpecialFolders("Desktop")
            Set oShellLink = WshShell.CreateShortcut(strMyFile)
            nomDuFichier = oShellLink.TargetPath
        Else
            nomDuFichier = strMyFile
        End If
     
        strApplicationFilename = GetApplicationFilename(nomDuFichier)
        If Len(strApplicationFilename) Then
                strFullExecutionPath = strApplicationFilename & " " & nomDuFichier
                lngShell = Shell(strFullExecutionPath, 3)
        Else
            MsgBox "There is no application installed on this computer for this type of files '" & nomDuFichier & " !", 48
        End If
    End Sub
     
     
    Private Function GetApplicationFilename(ByVal ApplicationFilename As String) _
    As String
    Dim lngSuccess As Integer, strBuffer As String
    Dim strExecutablePath As String
     
        strExecutablePath = vbNullString
        If Dir(ApplicationFilename) = vbNullString Or Len(ApplicationFilename) = 0 Then
        Else
            strBuffer = String(MAX_FILENAME_LEN, 32)
            lngSuccess = FindExecutable(ApplicationFilename, vbNullString, strBuffer)
            If lngSuccess > 32 Then
                strExecutablePath = Left$(strBuffer, InStr(strBuffer, Chr$(0)) - 1)
            End If
        End If
        GetApplicationFilename = strExecutablePath
    End Function

Discussions similaires

  1. [Base Registre] Liste des logiciels installés
    Par Invité dans le forum C++
    Réponses: 2
    Dernier message: 13/02/2009, 21h31
  2. Liste des Patch installés sur une RHEL AS 2.1
    Par wimax91 dans le forum Sécurité
    Réponses: 5
    Dernier message: 23/08/2008, 16h03
  3. Réponses: 5
    Dernier message: 10/07/2006, 19h11
  4. Liste des logiciels installés
    Par Civodul4 dans le forum Windows
    Réponses: 4
    Dernier message: 06/10/2004, 15h51
  5. Comment récupérer la liste des logiciels installés sur une machine ?
    Par david_chardonnet dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 19/09/2003, 18h41

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