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

VB 6 et antérieur Discussion :

Récupérer la version d'une DLL utilisée lors de l'exécution ? c'est possible?


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Points : 119
    Points
    119
    Par défaut Récupérer la version d'une DLL utilisée lors de l'exécution ? c'est possible?
    Bonjour,

    j'aimerai afficher dans mon programme le numéro de version de plusieurs dll utilisées par l'exécutable principal. Est-ce possible ou dois-je obligatoirement implémenter une méthode dans mes dll pour cela ?

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 187
    Points
    17 187
    Par défaut
    Une methode permet de recuperer pas mal d'informations.
    Exemples sous windows 2K
    0 Name : OLEAUT32.DLL
    1 Size : 617 Ko
    2 Type : Extension de l'application
    3 Date Modified : 05/12/2007 11:40
    4 Date Created : A
    6 Attributes : 08/12/2000 16:49
    7 Status : 19/12/2008 12:29
    8 Owner : Administrateurs
    16 Artist : Microsoft Corporation
    18 Year : 2.40.4532.0
    20 Genre : 2.40.4532
    n° version est dans Year: 2.40.4532.0 et/ou dans Genre = 2.40.4532
    Un autre exemple
    0 Name : WININET.DLL
    1 Size : 568 Ko
    2 Type : Extension de l'application
    3 Date Modified : 16/10/2008 10:50
    4 Date Created : A
    6 Attributes : 16/10/2008 10:50
    7 Status : 19/12/2008 06:52
    8 Owner : Administrateurs
    16 Artist : Microsoft Corporation
    17 Album Title : Extensions Internet pour Win32
    18 Year : 6.0.2800.1617
    19 Track Number : Système d'exploitation Microsoft® Windows®
    20 Genre : 6.00.2800.1617
    voici la sub
    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
    Public Sub informationsFichier()
    '******************************
    '******** recuperé sur DVP *********
    '******************************
    'pour avoir les infos que tu recherches
    'necessite d'activer reference Microsoft Shell Controls and Automation
     
    Dim objShell As Shell
    Dim objFolder As Folder
    Dim strFileName As FolderItem
     
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.NameSpace(Chemin) 'adapter le chemin
    Set strFileName = objFolder.Items.Item(Fichier) 'adapter le fichier
    List1.Clear: LargMin = 0
    For T = 0 To objFolder.Items.Count - 1
     If objFolder.GetDetailsOf(strFileName, T) <> "" Then
      List1.AddItem CStr(T) & " " & NamIndx(T) & Trim$(objFolder.GetDetailsOf(strFileName, T))
      Debug.Print List1.List(List1.NewIndex)
      If LargMin < Len(List1.List(List1.NewIndex)) Then LargMin = Len(List1.List(List1.NewIndex))
     End If
    Next
    Set objShell = Nothing: Set objFolder = Nothing: Set strFileName = Nothing
    End Sub
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Points : 119
    Points
    119
    Par défaut
    Si je comprend bien, ton exemple permet de récupérer la version à partir du chemin d'un fichier.

    Ce que j'aimerai, c'est récupérer la version de la DLL effectivement chargée. En effet, si on a enregistrée la DLL à différents endroits du disque, dans des versions différentes mais avec compatibilité binaire, je n'ai aucun moyen d'être sûr d'avoir la version voulue.

    Dit comme cela, ça peut paraître tordu, mais j'ai eu un cas ambigu que j'aimerai ne plus retrouver. J'ai finalement ajouté la méthode dans mes DLL et j'y fais ensuite appel.
    Cependant, je ne pourrai pas faire cela pour des DLL qui ne sont pas de moi, donc ma question m'intéresse toujours si une solution existe...

  4. #4
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Il existe sur ce site, un lien pour aller sur AllApi

    http://vb.developpez.com/outils/?page=outils#apiguide

    Télécharge ApiGuide et installe le . C'est une mine d'informations incontournable pour les programmeurs qui veulent aller plus loin..

    Cherches y "GetFileVersionInfo"
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  5. #5
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Avec le PID
    récupérer les modules en mémoire (voir EnumProcessModules)
    puis pour chaque module, sa source (GetModuleFileNameExA).
    Pour les versions, GetFileVersionInfo et VerQueryValue

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Points : 119
    Points
    119
    Par défaut
    Avec le PID
    récupérer les modules en mémoire (voir EnumProcessModules)
    puis pour chaque module, sa source (GetModuleFileNameExA).
    Pour les versions, GetFileVersionInfo et VerQueryValue
    Ah oui, c'est une solution qui me plait bien, j'essaierai ça. Merci DarkVader.

    Bonne fin d'année.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Windows] Récupérer la version d'une DLL
    Par marartiste dans le forum Plateformes
    Réponses: 1
    Dernier message: 12/03/2014, 19h33
  2. Réponses: 2
    Dernier message: 12/09/2006, 17h48
  3. Récupérer la version d'une application
    Par selmak7 dans le forum C++Builder
    Réponses: 3
    Dernier message: 19/06/2006, 13h23
  4. [inno setup/is tool] Version d'une dll.
    Par méphistopheles dans le forum Installation, Déploiement et Sécurité
    Réponses: 6
    Dernier message: 21/02/2006, 22h25
  5. Réponses: 5
    Dernier message: 01/07/2005, 14h56

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