Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As Long
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Private Const VER_PLATFORM_WIN32s = 0
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const VER_PLATFORM_WIN32_NT = 2
Private Function LoWord(lngIn As Long) As Integer
If (lngIn And &HFFFF&) > &H7FFF Then
LoWord = (lngIn And &HFFFF&) - &H10000
Else
LoWord = lngIn And &HFFFF&
End If
End Function
Public Function WinVersion(Optional show_version As Boolean = True, _
Optional show_build As Boolean = True) As String
'Returns Windows version & build
Dim version As OSVERSIONINFO
Dim strPlatform As String
version.dwOSVersionInfoSize = Len(version)
GetVersionEx version
If version.dwPlatformId = VER_PLATFORM_WIN32s Then
strPlatform = "Microsoft Windows 32s "
ElseIf version.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
Select Case version.dwMinorVersion
Case 0
If LoWord(version.dwBuildNumber) = 1111 Then
strPlatform = "Microsoft Windows 95B "
Else
'If LoWord(version.dwBuildNumber) = 950 Then
strPlatform = "Microsoft Windows 95 "
End If
Case 10
If LoWord(version.dwBuildNumber) = 2222 Then
strPlatform = "Microsoft Windows 98 SE "
Else
'if LoWord(version.dwBuildNumber) = 1998 Then
strPlatform = "Microsoft Windows 98 "
End If
Case 90
'if LoWord(version.dwBuildNumber) = 3000 Then
strPlatform = "Microsoft Windows ME "
End Select
ElseIf version.dwPlatformId = VER_PLATFORM_WIN32_NT Then
Select Case version.dwMajorVersion
Case 3: strPlatform = "Microsoft Windows NT 3.51 "
Case 5: strPlatform = "Microsoft Windows 2000 "
Case 6: strPlatform = "Microsoft Windows XP "
Case Else: strPlatform = "Microsoft Windows NT " '(was 4, best for any others!)
End Select
End If
WinVersion = strPlatform _
& IIf(show_version, "v" & Format(version.dwMajorVersion) & "." & Format(version.dwMinorVersion), "") _
& IIf(show_build, " (Build " & LoWord(version.dwBuildNumber) & ")", "")
End Function