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
osName As String
End Type
Public Function GetVersionName() As String '判断操作系统类型
Dim OSInfo As OSVERSIONINFO
Dim ret As Long
OSInfo.dwOSVersionInfoSize = 148 'Len(OSInfo)
'获得系统的版本号
ret = GetVersionEx(OSInfo)
If ret = 0 Then MsgBox "在试图获得系统版本号时发生了一个未知错误", , "提示": Exit Function
'Print "系统版本:" + Str$(OSInfo.dwMajorVersion) + "." + LTrim(Str(OSInfo.dwMinorVersion))
With OSInfo
Select Case .dwPlatformId
Case 1
Select Case .dwMinorVersion
Case 0
.osName = "Windows 95"
Case 10
.osName = "Windows 98"
Case 90
.osName = "Windows Mellinnium"
End Select
Case 2
Select Case .dwMajorVersion
Case 3
.osName = "Windows NT 3.51"
Case 4
.osName = "Windows NT 4.0"
Case 5
If .dwMinorVersion = 0 Then
.osName = "Windows 2000"
ElseIf .dwMinorVersion = 1 Then
.osName = "Windows XP"
Else
.osName = "Windows 2003"
End If
End Select
Case Else
.osName = "Failed"
End Select
GetVersionName = .osName
End With
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 ' Maintenance string for PSS usage
End Type
Private Const VER_PLATFORM_WIN32_NT = 2
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const VER_PLATFORM_WIN32s = 0
Private Sub Command1_Click()
Dim OSVER As OSVERSIONINFO
OSVER.dwOSVersionInfoSize = Len(OSVER)
GetVersionEx OSVER
MsgBox GETVER(OSVER)
End Sub
Private Function GETVER(VER As OSVERSIONINFO) As String
Dim VI&, VE$
With VER
GETVER = "版本: " & .dwMajorVersion & "." & .dwMinorVersion
VI = (.dwBuildNumber And &HFF)
GETVER = GETVER & vbCrLf & "BUILDNUMBER: " & VI
Select Case .dwPlatformId
Case VER_PLATFORM_WIN32_NT
VE = "平台: WINDOWS NT"
Case VER_PLATFORM_WIN32s
VE = "平台: WINDOWS 3.2"
Case VER_PLATFORM_WIN32_WINDOWS
If .dwMinorVersion = 0 Then VE = "平台: WINDOWS95" Else VE = "平台: WINDOWS98"
Case Else
VE = "PLATFORM: UNKNOW"
End Select
GETVER = GETVER & vbCrLf & VE
If VE = "平台: WINDOWS NT" Then GETVER = GETVER & vbCrLf & "SERVICE PACK" & .szCSDVersion Else GETVER = GETVER & vbCrLf & "其他:" & Trim(.szCSDVersion)
End With
End Function