Option Explicit
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (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
Const VER_PLATFORM_WIN32s = 0
Const VER_PLATFORM_WIN32_WINDOWS = 1
Const VER_PLATFORM_WIN32_NT = 2
Private Sub Form_Load()
MsgBox GetOS
Unload Me
End Sub
Public Function GetOS() As String
Dim osvi As OSVERSIONINFO
osvi.dwOSVersionInfoSize = Len(osvi)
GetVersionEx osvi
Select Case osvi.dwPlatformId
Case VER_PLATFORM_WIN32_NT
Select Case osvi.dwMajorVersion
Case 5
Select Case osvi.dwMinorVersion
Case 0
GetOS = "Microsoft Windows 2000"
Case 1
GetOS = "Microsoft Windows XP"
Case 2
GetOS = "Microsoft Windows Server 2003 family"
End Select
Case Is <= 4
GetOS = "Microsoft Windows NT"
End Select
Case VER_PLATFORM_WIN32_WINDOWS
If osvi.dwMajorVersion = 4 Then
Select Case osvi.dwMinorVersion
Case 0
GetOS = "Microsoft Windows 95"
Case 10
GetOS = "Microsoft Windows 98"
Case 90
GetOS = "Microsoft Windows Millennium Edition"
End Select
End If
Case VER_PLATFORM_WIN32s
GetOS = "Microsoft Win32s"
End Select
End Function