Thanos_the_yopper
Messages postés309Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention 5 mars 2009
-
10 juin 2004 à 17:41
Thanos_the_yopper
Messages postés309Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention 5 mars 2009
-
22 juil. 2004 à 09:48
j'aurias voulu savoir comment récupérer la version d'internet explorer installé sur le post via VB6
merci d'avance ^__^
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 10 juin 2004 à 21:04
Salut,
Le problème avec la lecture de la registry c que c pas si fiable que ça pour les versions de logiciels et que le chemin est des fois différent suivant l'OS.
J'utilise un module (pardon pour l'auteur, je ne me souviens plus où) qui fonctionne pour les versions 95, 98, 2000, XP et peut-être d'autres ?
Avant le code, petite explik. Pour une utilisation juste basique, tu peux appeler uniquement la fonction GetIEVersionString ds le genre label1=GetIEVersionString, dans ce cas, tu peux supprimer les functions inutiles : GetIEVersionFriendlyName et GetIEVersion, si tu ne veux pas non plus la release, tu peux aussi supprimer :
& "." & DVI.dwBuildNumber dans GetIEVersionString.
Si tu veux vraiment tout, alors tu appelles la function GetIEVersionFriendlyName. Si ça t'affiche quelque comme : "Internet Explorer 6 (unknown), c à toi d'ajouter un case ds les "Select Case DVI.dwBuildNumber".
J'espère que je suis assez clair, voilà le code à mettre ds un module :
Private Type DllVersionInfo
cbSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
End Type
Private DVI As DllVersionInfo
Private Declare Function DllGetVersion _
Lib "Shlwapi.dll" _
( _
dwVersion As DllVersionInfo _
) As Long
Public Function GetIEVersionFriendlyName() As String
Dim s As String
Dim DVI As DllVersionInfo
GetIEVersion DVI
Select Case DVI.dwMajorVersion
Case 4
Select Case DVI.dwMinorVersion
Case 70
Select Case DVI.dwBuildNumber
Case 1155: s = "3.0"
Case 1158: s = "3.0 (OSR2)"
Case 1215: s = "3.01"
Case 1300: s = "3.02 and 3.02a"
Case Else: s = "3 (Unknown)"
End Select
Case 71
Select Case DVI.dwBuildNumber
Case 1008: s = "4.0 PP2"
Case 1712: s = "4.0"
Case Else: s = "4.0 (Unknown)"
End Select
Case 72
Select Case DVI.dwBuildNumber
Case 2106: s = "4.01"
Case 3110: s = "4.01 Service Pack 1"
Case 3612: s = "4.01 SP2"
Case 3711: s = "4.x with Update"
Case Else: s = "4.0 (Unknown)"
End Select
Case Else: s = "(Unknown)"
End Select
Case 5
Select Case DVI.dwMinorVersion
Case 0
Select Case DVI.dwBuildNumber
Case 518: s = "5 Developer Preview (Beta 1)"
Case 910: s = "5 Beta (Beta 2)"
Case 2014: s = "5"
Case 2314: s = "5 (Office 2000)"
Case 2516: s = "5.01 (Windows 2000 Beta 3)"
Case 2614: s = "5 (Windows 98 Second Edition)"
Case 2717, 2721, 2723: s = "5 with update"
Case 2919: s = "5.01 (Windows 2000 RC1&2/Office 2000 SR-1/Update)"
Case 2920: s = "5.01 (Windows 2000)"
Case 3103: s = "5.01 SP1 (Windows 2000)"
Case 3105: s = "5.01 SP1 (Windows 95/98 and Windows NT 4.0)"
Case 3314: s = "5.01 SP2 (Windows 95/98 and Windows NT 4.0)"
Case 3315: s = "5.01 SP2 (Windows 2000)"
Case Else: s = "5 (Unknown)"
End Select
Case 50
Select Case DVI.dwBuildNumber
Case 3825: s = "5.5 Developer Preview (Beta)"
Case 4030: s = "5.5 & Internet Tools Beta"
Case 4134: s = "5.5"
Case 4308: s = "5.5 Advanced Security Privacy Beta"
Case 4522: s = "5.5 Service Pack 1"
Case 4807: s = "5.5 Service Pack 2"
Case Else: s = "5.5 (Unknown)"
End Select
Case Else: s = GetIEVersionString()
End Select
Case 6
Select Case DVI.dwMinorVersion
Case 0
Select Case DVI.dwBuildNumber
Case 2462: s = "6 global Preview (Beta)"
Case 2479: s = "6 global Preview (Beta) Refresh"
Case 2600: s = "6"
Case 2800: s = "6 Service Pack 1"
Case Else: s = "6 (Unknown)"
End Select
Case Else: s = GetIEVersionString()
End Select
Case Else: s = GetIEVersionString()
End Select
GetIEVersionFriendlyName = "Internet Explorer " & s
End Function
Private Function GetIEVersion(DVI As DllVersionInfo) As Long
DVI.cbSize = Len(DVI)
DllGetVersion DVI
GetIEVersion = DVI.dwMajorVersion
End Function
Function GetIEVersionString() As String
Dim DVI As DllVersionInfo
Le code pour lire une clé (à copier dans un module) :
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Const REG_SZ = 1 ' Unicode nul terminated string
Private Const REG_BINARY = 3 ' Free form binary
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Function GetRegString(hKey As Long, strPath As String, strValue As String)
Dim Ret
'Open the key
RegOpenKey hKey, strPath, Ret
'Get the key's content
GetRegString = RegQueryStringValue(Ret, strValue)
'Close the key
RegCloseKey Ret
End Function
'____ FIN DU MODULE_____
'La façon de procéder :
Msgbox "La version d'Internet Explorer est : " & GetRegString(HKEY_LOCAL_MACHINE,"SOFTWARE\Microsoft\Internet Explorer","Version")
Thanos_the_yopper
Messages postés309Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention 5 mars 2009 11 juin 2004 à 09:49
oula, c'est super complet ca !!! merci bien
en fait, pour le cas présent, j'aurais pas besoin de toute ça, je veux juste savoir si je suis au moins dans une version 5 ou plus, mais ça pourra toujours servire plus tard ! donc, merci bien :D
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 19 juil. 2004 à 19:19
Salut,
Non, je ne te jetterai pas de pierres.
Je ne rirai pas non plus car IE 2.0 existe bel et bien ou a existé, suffit de taper IE 2.0 dans google pour le savoir.
Est-ce que mon bout de source le détecte ? Pourquoi pas ? Tu as remarqué les Case Else: s = GetIEVersionString() ? ben c fait pour détecter des versions qui ne sont pas dans la liste.
Donc si les machines sur lesquelles IE 2.0 est installé comprennent les APIs du source, je dirai oui, ça devrait marcher.
Thanos_the_yopper
Messages postés309Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention 5 mars 2009 20 juil. 2004 à 09:37
en fait, sur la machine ou je l'ai testé (a savoir NT4 avec IE2), la dll Shlwapi.dll n'est pas installée ... et si on install un IE3 par dessus, cette dll est installée aussi, mais elle en contient pas les API necessaire pour récupérer la version, enfin, pas a ce qu'il m'a semblé, le bout de code plante :/
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 20 juil. 2004 à 19:15
En fait,Shlwapi.dll ne contient pas d'API.
La fonction DllGetVersion récupère seulement des infos sur la version des DLL, on peut l'appliquer à d'autre DLL. Voir :
sarl_adc
Messages postés141Date d'inscriptionlundi 3 novembre 2003StatutMembreDernière intervention20 octobre 2005 21 juil. 2004 à 15:53
Hmmm... C'est normal qu'il n'y ait rien dans ce sujet ? Pas de texte visible, que des messages vides...
Enfin si quelqu'un a une soluce pour la version d'IE je suis intéressé ;-)
Pour l'instant, je cherche le fichier IEXPLORE.EXE via une API qui me donne le répertoire "Program Files" et une DLL qui me cherche le fichier.
Puis je cherche son n° de version.
Mais j'aimerais trouver + simple et + sûr s'il existe.
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 21 juil. 2004 à 18:35
Bizarre sarl_adc, car g mis un peu plus haut un code pour récupérer la version d'IE.
Ptete pas très simple mais (assez) sûre. En tous cas, pour moi elle suffit et me donne toujours des résultats justes.
Remarque, tu peux le simplifier facilement.
il y a même une autre méthode donnée par Neo.balastik : lecture ds la registry.