Connaitre la version du MDAC installé

Contenu du snippet

Private Const HKEY_CLASSES_ROOT As Long = &H80000000
Private Const KEY_ALL_ACCESS    As Long = &H3F
Private Const ERROR_SUCCESS     As Long = 0&
Private Const REG_SZ            As Long = 1&
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As  Long
Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByVal szData As String, ByRef lpcbData As Long) As  Long
'
Function GetMDACVersion(Optional ByRef iMajor As Integer, Optional ByRef iMinor As Integer) As String
    Dim lRet As Long, lKeyHandle As Long, sBuffer As String, sRet As String
    GetMDACVersion = "0.00"
 
'   ouvre la  clé
    lRet = RegOpenKeyEx(HKEY_CLASSES_ROOT,  "MDACVer.Version\CurVer\", 0&, KEY_ALL_ACCESS, lKeyHandle)
    If lRet = ERROR_SUCCESS Then
'       la clé existe, on  cherche la valeur
        sBuffer = String(256, vbNullChar)
        lRet = RegQueryValueEx(lKeyHandle, vbNullString, 0&, REG_SZ, sBuffer, Len(sBuffer))
        
        If lRet = ERROR_SUCCESS Then
'           pas d'erreur,  vérifie la valeur pour ne récupérer que le numérique
            lRet = InStrB(1, sBuffer, vbNullChar)
            If lRet > 0 Then
                sRet = Trim$(LeftB$(sBuffer, lRet))
                GetMDACVersion = RightB$(sRet, 8)
            End If
        End If
'       on ferme la  clé
        Call RegCloseKey(lKeyHandle)
    End If
'   on recoupe la chaine  pour séparer Major/Minor
    iMajor = LeftB(GetMDACVersion, 2)
    iMinor = RightB(sRet, 4)
End Function


Compatibilité : VB6, VBA

Disponible dans d'autres langages :

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.