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 ?
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 ?
Une methode permet de recuperer pas mal d'informations.
Exemples sous windows 2K
n° version est dans Year: 2.40.4532.0 et/ou dans Genre = 2.40.45320 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
Un autre exemplevoici la sub0 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
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 ← ← 👈
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...
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
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.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
Bonne fin d'année.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager