cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200620 14 juil. 2005 à 13:56
Salut,
Il me semble que j'ai déjà posté une réponse à ce même genre de problème. Comme je n'ai pas retrouvé, c'est loin, voilà :
C'est à base d'api interrogeant la registry, tu colles le code suivant dans un module et pour avoir ton information tu codes TaVar = VersionOffice. La réponse sera un n° (8 pour Office 97, 9 pour Office 2000, 10 pour Office 2002 ou 2003, ... enfin je n'ai pas toutes les correspondances, vérifie).
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const REG_SZ As Long = 1
Private Declare Function RegOpenKey _
Lib "advapi32" Alias "RegOpenKeyA" _
( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
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, _
lpType As Long, _
lpData As Any, _
lpcbData As Long _
) As Long
Private Function GetString(hKey As Long, strPath As String, strValue As String) As String
Dim Keyhand As Long, lResult As Long
Dim strBuf As String, lDataBufSize As Long
Dim lValueType As Long
'ouverture de la clé
Call RegOpenKey(hKey, strPath, Keyhand)
'lecture du type de valeur
lResult = RegQueryValueEx(Keyhand, strValue, 0&, lValueType, ByVal 0&, lDataBufSize)
'si c'est du string
If lValueType = REG_SZ Then
strBuf = String(lDataBufSize, " ") 'init du buffer
'récup de la valeur
lResult = RegQueryValueEx(Keyhand, strValue, 0&, 0&, ByVal strBuf, lDataBufSize)
If lResult = 0& Then
'on élimine les chars null
GetString = Split(strBuf, Chr(0))(0)
End If
End If
End Function
Public Function VersionOffice() As String
Dim tmp As String