Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'=============================== > 'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As Long
'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200
Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3
Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type
Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$
ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver
ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)
Select Case ver.dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select
Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf
If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" & vbLf
End If
MsgBox Msg
End Sub 'fs
'================================
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'=============================== > 'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As Long
'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200
Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3
Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type
Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$
ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver
ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)
Select Case ver.dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select
Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf
If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" & vbLf
End If
MsgBox Msg
End Sub 'fs
'================================
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'=============================== > 'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As Long
'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200
Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3
Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type
Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$
ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver
ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)
Select Case ver.dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select
Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf
If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" & vbLf
End If
MsgBox Msg
End Sub 'fs
'================================
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'=============================== > 'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As Long
'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200
Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3
Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type
Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$
ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver
ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)
Select Case ver.dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select
Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf
If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" & vbLf
End If
MsgBox Msg
End Sub 'fs
'================================
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'=============================== > 'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As Long
'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200
Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3
Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type
Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$
ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver
ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)
Select Case ver.dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select
Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf
If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" & vbLf
End If
MsgBox Msg
End Sub 'fs
'================================
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'=============================== > 'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As Long
'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200
Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3
Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type
Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$
ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver
ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)
Select Case ver.dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select
Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf
If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" & vbLf
End If
MsgBox Msg
End Sub 'fs
'================================
Bonjour.
Pour que ça marche avec Win 98, il me semble que le test n'est pas sur la bonne structure.
Select Case ver.dwPlatformId doit être remplacé par Select Case ver2.dwPlatformId
La structure ver ne renvoie rien.
J'obtiens
Système : Windows 98
Numéro version : [4.10]
Service Pack : Aucun Service Pack installé.
Alain CROS.
Bonjour.
Pour que ça marche avec Win 98, il me semble que le test n'est pas sur la bonne structure.
Select Case ver.dwPlatformId doit être remplacé par Select Case ver2.dwPlatformId
La structure ver ne renvoie rien.
J'obtiens
Système : Windows 98
Numéro version : [4.10]
Service Pack : Aucun Service Pack installé.
Alain CROS.
Bonjour.
Pour que ça marche avec Win 98, il me semble que le test n'est pas sur la bonne structure.
Select Case ver.dwPlatformId doit être remplacé par Select Case ver2.dwPlatformId
La structure ver ne renvoie rien.
J'obtiens
Système : Windows 98
Numéro version : [4.10]
Service Pack : Aucun Service Pack installé.
Alain CROS.
Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec Windows 98 (première
édition). Je vais essayer de trouver une solution avec Clément, s'il est
d'accord.
Personne n'utilise plus Windows 95, NT 3.xx ?
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'=============================== > > 'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As Long
'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200
Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3
Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type
Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$
ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver
ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)
Select Case ver.dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select
Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf
If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" & vbLf
End If
MsgBox Msg
End Sub 'fs
'=============================== >
Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec Windows 98 (première
édition). Je vais essayer de trouver une solution avec Clément, s'il est
d'accord.
Personne n'utilise plus Windows 95, NT 3.xx ?
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'=============================== > > 'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As Long
'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200
Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3
Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type
Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$
ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver
ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)
Select Case ver.dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select
Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf
If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" & vbLf
End If
MsgBox Msg
End Sub 'fs
'=============================== >
Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec Windows 98 (première
édition). Je vais essayer de trouver une solution avec Clément, s'il est
d'accord.
Personne n'utilise plus Windows 95, NT 3.xx ?
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'=============================== > > 'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As Long
'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200
Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3
Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type
Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$
ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver
ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)
Select Case ver.dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select
Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf
If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" & vbLf
End If
MsgBox Msg
End Sub 'fs
'=============================== >
Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec Windows 98 (première
édition). Je vais essayer de trouver une solution avec Clément, s'il est
d'accord.
Personne n'utilise plus Windows 95, NT 3.xx ?
FS
Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec Windows 98 (première
édition). Je vais essayer de trouver une solution avec Clément, s'il est
d'accord.
Personne n'utilise plus Windows 95, NT 3.xx ?
FS
Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec Windows 98 (première
édition). Je vais essayer de trouver une solution avec Clément, s'il est
d'accord.
Personne n'utilise plus Windows 95, NT 3.xx ?
FS
Bonjour Frédéric,
Au bureau : 2 postes en Win95 & Off2000.
Je vais également vérifiéer en Win98SE car j'ai une indication "pas de
SP" alors qu'ils ont été appliqués.
@+
FxM
Frédéric Sigonneau wrote:Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec Windows 98 (première
édition). Je vais essayer de trouver une solution avec Clément, s'il est
d'accord.
Personne n'utilise plus Windows 95, NT 3.xx ?
FS
Bonjour Frédéric,
Au bureau : 2 postes en Win95 & Off2000.
Je vais également vérifiéer en Win98SE car j'ai une indication "pas de
SP" alors qu'ils ont été appliqués.
@+
FxM
Frédéric Sigonneau wrote:
Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec Windows 98 (première
édition). Je vais essayer de trouver une solution avec Clément, s'il est
d'accord.
Personne n'utilise plus Windows 95, NT 3.xx ?
FS
Bonjour Frédéric,
Au bureau : 2 postes en Win95 & Off2000.
Je vais également vérifiéer en Win98SE car j'ai une indication "pas de
SP" alors qu'ils ont été appliqués.
@+
FxM
Frédéric Sigonneau wrote:Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec Windows 98 (première
édition). Je vais essayer de trouver une solution avec Clément, s'il est
d'accord.
Personne n'utilise plus Windows 95, NT 3.xx ?
FS
Salut FxM,
Merci d'avance (ainsi qu'à Philippe).
Je te dis ça demain soir après essais.
Les informations sur la présence d'un Service Pack ne sont pas disponibles sur
les systèmes Win 95/98/Me.
Pffoouu, j'ai eu peur ! Moi qui avais du aller chercher toutes les MAJ
Salut FxM,
Merci d'avance (ainsi qu'à Philippe).
Je te dis ça demain soir après essais.
Les informations sur la présence d'un Service Pack ne sont pas disponibles sur
les systèmes Win 95/98/Me.
Pffoouu, j'ai eu peur ! Moi qui avais du aller chercher toutes les MAJ
Salut FxM,
Merci d'avance (ainsi qu'à Philippe).
Je te dis ça demain soir après essais.
Les informations sur la présence d'un Service Pack ne sont pas disponibles sur
les systèmes Win 95/98/Me.
Pffoouu, j'ai eu peur ! Moi qui avais du aller chercher toutes les MAJ
-----Message d'origine-----
Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec
Windows 98 (première
édition). Je vais essayer de trouver une solution avec
Clément, s'il est
d'accord.
Personne n'utilise plus Windows 95, NT 3.xx ?
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans
oublier aucune des
"déclinaisons" possibles, la version exacte de Windows
en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir
oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier
que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98
SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions
pouvaient :
-recopier le code joint dans un module standard d'un
classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'======================== ========
'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32"
Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32"
Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As
Long
'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200
Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3
Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines
versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur
service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type
Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$
ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver
ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)
Select Case ver.dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And
ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And
ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And
ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde
Édition)"
ElseIf ver2.dwMajorVersion = 4 And
ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." &
Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion
= 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And
ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And
ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And
ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And
ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And
ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL
Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER
Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And
VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And
ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select
Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf
If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " &
ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack
installé" & vbLf
End If
MsgBox Msg
End Sub 'fs
'======================== ========
.
-----Message d'origine-----
Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec
Windows 98 (première
édition). Je vais essayer de trouver une solution avec
Clément, s'il est
d'accord.
Personne n'utilise plus Windows 95, NT 3.xx ?
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans
oublier aucune des
"déclinaisons" possibles, la version exacte de Windows
en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir
oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier
que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98
SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions
pouvaient :
-recopier le code joint dans un module standard d'un
classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'======================== ========
'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32"
Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32"
Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As
Long
'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200
Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3
Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines
versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur
service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type
Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$
ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver
ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)
Select Case ver.dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And
ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And
ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And
ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde
Édition)"
ElseIf ver2.dwMajorVersion = 4 And
ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." &
Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion
= 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And
ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And
ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And
ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And
ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And
ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL
Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER
Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And
VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And
ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select
Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf
If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " &
ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack
installé" & vbLf
End If
MsgBox Msg
End Sub 'fs
'======================== ========
.
-----Message d'origine-----
Bonjour,
Merci de vos réponses. Ça ne semble pas fonctionner avec
Windows 98 (première
édition). Je vais essayer de trouver une solution avec
Clément, s'il est
d'accord.
Personne n'utilise plus Windows 95, NT 3.xx ?
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir,
J'ai essayé d'écrire une procédure qui renvoie, sans
oublier aucune des
"déclinaisons" possibles, la version exacte de Windows
en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir
oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier
que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98
SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions
pouvaient :
-recopier le code joint dans un module standard d'un
classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
'======================== ========
'infos sur l'OS utilisé (version, type, etc.)
Public Declare Function GetWinVersion Lib "kernel32"
Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32"
Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As
Long
'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200
Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3
Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&
'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines
versions
End Type
'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur
service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type
Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$
ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver
ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)
Select Case ver.dwPlatformId
Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And
ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And
ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And
ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde
Édition)"
ElseIf ver2.dwMajorVersion = 4 And
ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." &
Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion
= 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And
ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And
ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And
ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And
ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And
ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL
Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER
Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And
VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And
ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select
NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select
Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf
If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " &
ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack
installé" & vbLf
End If
MsgBox Msg
End Sub 'fs
'======================== ========
.