[AccessD] Operating System Class

DWUTKA at marlow.com DWUTKA at marlow.com
Fri May 27 18:42:06 CDT 2005


Just something I'm putting into a little project I'm working on.  I know
this stuff has been asked before, so here is all sorts of stuff for the OS
put into a handy class for ya!

Option Explicit
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA"
(lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Function GetVersionEx2 Lib "kernel32" Alias "GetVersionExA"
(lpVersionInformation As OSVERSIONINFOEX) As Long
Private Type OSVERSIONINFO
  intOSVersionInfoSize As Long
  intMajorVersion As Long
  intMinorVersion As Long
  intBuildNumber As Long
  intPlatformId As Long
  strCSDVersion As String * 128
End Type
Private Type OSVERSIONINFOEX
  intOSVersionInfoSize As Long
  intMajorVersion As Long
  intMinorVersion As Long
  intBuildNumber As Long
  intPlatformId As Long
  strCSDVersion As String * 128
  intServicePackMajor As Integer
  intServicePackMinor As Integer
  intSuiteMask As Integer
  bytProductType As Byte
  bytReserved As Byte
End Type
Public OSType As String
Public OSVersion As String
Public OSBuild As Long
Public OSName As String
Public NTBased As Boolean
Public NT4 As Boolean
Public Windows2000 As Boolean
Public WindowsXP As Boolean
Public Windows2003 As Boolean
Public Server As Boolean
Public DomainController As Boolean
Public ServicePack As String
Dim CSDString As String
Private Sub Class_Initialize()
Dim os As OSVERSIONINFO
Dim dwReturn As Long
Dim osNT As OSVERSIONINFOEX
os.intOSVersionInfoSize = Len(os)
dwReturn = GetVersionEx(os)
Server = False
DomainController = False
If dwReturn = 0 Then
    OSType = "Unknown"
    NTBased = False
    OSName = "Unknown"
Else
    CSDString = os.strCSDVersion
    CSDString = Left(Trim(UCase(CSDString)), 1)
    If os.intPlatformId = 2 Then
        OSType = "Windows NT"
        NTBased = True
    Else
        OSType = "Windows 9x"
        NTBased = False
    End If
    OSVersion = os.intMajorVersion & "." & os.intMinorVersion
    If NTBased Then
        OSBuild = os.intBuildNumber
    Else
        OSBuild = os.intBuildNumber And &HFFF
    End If
    Windows2000 = False
    WindowsXP = False
    Windows2003 = False
    NT4 = False
    If NTBased Then
        osNT.intOSVersionInfoSize = Len(osNT)
        dwReturn = GetVersionEx2(osNT)
        ServicePack = osNT.intServicePackMajor & "." &
osNT.intServicePackMinor
        If dwReturn = 0 Then
            OSName = "Error"
        Else
            DomainController = osNT.bytProductType = 2
            If DomainController Then
                Server = True
            Else
                Server = osNT.bytProductType = 3
            End If
            Select Case os.intMajorVersion
                Case 4
                    NT4 = True
                    Select Case osNT.bytProductType
                        Case 1
                            OSName = "Windows NT 4.0 WorkStation"
                        Case 2, 3
                            If osNT.intSuiteMask = 2 Then
                                OSName = "Windows NT 4.0 Server Enterprise
Edition"
                            Else
                                OSName = "Windows NT 4.0 Server Standard
Edition"
                            End If
                        Case Else
                            OSName = "Windows NT 4.0"
                    End Select
                Case 5
                    Select Case os.intMinorVersion
                        Case 0
                            Windows2000 = True
                            Select Case osNT.bytProductType
                                Case 1
                                    OSName = "Windows 2000 Professional
Edition"
                                Case 2, 3
                                    Select Case osNT.intSuiteMask
                                        Case &H80
                                            OSName = "Windows 2000 Server
DataCenter"
                                        Case &H2
                                            OSName = "Windows 2000 Server
Advanced"
                                        Case Else
                                            OSName = "Windows 2000 Server"
                                    End Select
                                Case Else
                                    OSName = "Windows 2000"
                            End Select
                        Case 1
                            WindowsXP = True
                            Select Case osNT.intSuiteMask
                                Case &H200
                                    OSName = "Windows XP Home Edition"
                                Case Else
                                    OSName = "Windows XP Professional
Edition"
                            End Select
                        Case 2
                            Windows2003 = True
                            Select Case osNT.intSuiteMask
                                Case &H2
                                    OSName = "Windows Server 2003 Enterprise
Edition"
                                Case &H80
                                    OSName = "Windows Server 2003
DataCenter"
                                Case &H400
                                    OSName = "Windows Server 2003 Web
Edition"
                                Case Else
                                    OSName = "Windows Server 2003 Standard"
                            End Select
                        Case Else
                            OSName = "Unknown NT Based OS"
                    End Select
            End Select
        End If
    Else
        Select Case os.intMinorVersion
            Case 0
                 'Windows 95
                 Select Case CSDString
                    Case "A"
                        OSName = "Windows 95A"
                    Case "B"
                        OSName = "Windows 95B OSR2"
                    Case "C"
                        OSName = "Windows 95C OSR2"
                    Case Else
                        OSName = "Windows 95"
                End Select
            Case 10
                Select Case CSDString
                    Case "A"
                        OSName = "Windows 98 Second Edition"
                    Case Else
                        OSName = "Windows 98"
                End Select
            Case 90
                OSName = "Windows Millenium Edition"
            Case Else
                OSName = "Unknown Winodows 9x"
        End Select
    End If
End If
End Sub



More information about the AccessD mailing list