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
Private Sub Command1_Click() Dim v As OSVERSIONINFO v = GetWindowsVersion() MsgBox v.osName End Sub Private Function GetWindowsVersion() As OSVERSIONINFO Dim ver As OSVERSIONINFO ver.dwOSVersionInfoSize = 148 GetVersionEx verSelect Case ver.dwPlatformId Case 1 Select Case ver.dwMinorVersion Case 0 ver.osName = "Windows 95" Case 10 ver.osName = "Windows 98" Case 90 ver.osName = "Windows Mellinnium" End Select Case 2 Select Case ver.dwMajorVersion Case 3 ver.osName = "Windows NT 3.51" Case 4 ver.osName = "Windows NT 4.0" Case 5 If ver.dwMinorVersion = 0 Then ver.osName = "Windows 2000" Else ver.osName = "Windows XP" End If End Select Case Else ver.osName = "未知系统系统版本" End SelectGetWindowsVersion = ver End Function
Type OSVERSIONINFO dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End TypePrivate Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As Long Public Function Get_OS() As String Dim OSString$, OSVersion As OSVERSIONINFO, BuildNr&
OSString = "Unbekanntes Betriebssystem" With OSVersion If (.dwBuildNumber And &HFFFF&) > &H7FFF Then BuildNr = (.dwBuildNumber And &HFFFF&) - &H10000 Else BuildNr = .dwBuildNumber And &HFFFF& End If
If .dwPlatformId = VER_PLATFORM_WIN32_NT Then If .dwMajorVersion = 4 Then OSString = "Windows NT" ElseIf .dwMajorVersion = 5 Then If .dwMinorVersion = 0 Then OSString = "Windows 2000" ElseIf .dwMinorVersion = 1 Then OSString = "Windows XP" End If End If ElseIf .dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then If (.dwMajorVersion > 4) Or (.dwMajorVersion = 4 And _ .dwMinorVersion = 10) Then If BuildNr = 1998 Then OSString = "Windows 98" Else OSString = "Windows 98 SE" End If ElseIf (.dwMajorVersion = 4 And .dwMinorVersion = 0) Then OSString = "Windows 95" ElseIf (.dwMajorVersion = 4 And .dwMinorVersion = 90) Then OSString = "Windows ME" End If ElseIf .dwPlatformId = VER_PLATFORM_WIN32s Then OSString = "Windows 32s" End If End With
Get_OS = OSString End Function
以下在模块Option ExplicitPublic Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As LongPublic 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 TypePublic Function GetWindowsVersion() As OSVERSIONINFO Dim ver As OSVERSIONINFO ver.dwOSVersionInfoSize = 148 GetVersionEx ver With ver 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 Select Case .dwMinorVersion Case 0 .osName = "Windows 2000" Case 1 .osName = "Windows XP" Case 2 .osName = "Windows Server 2003" End Select End Select Case Else .osName = "Failed" End Select End With GetWindowsVersion = ver End Function
以下在窗体Private Sub Form_Load() Dim ver As OSVERSIONINFO ver = GetWindowsVersion() With ver Label1.Caption = .osName End With End Sub
用sysinfo控件,语法: Private Sub Command1_Click() Dim i As Integer i = Me.SysInfo1.OSPlatform If i = 0 Then MsgBox "操作系统为WIN95。" End If If i = 1 Then MsgBox "操作系统为WIN98。" End If If i = 2 Then MsgBox "操作系统为WIN2000或WINXP。" End If End Sub
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
Private Sub Command1_Click()
Dim v As OSVERSIONINFO
v = GetWindowsVersion()
MsgBox v.osName
End Sub
Private Function GetWindowsVersion() As OSVERSIONINFO
Dim ver As OSVERSIONINFO
ver.dwOSVersionInfoSize = 148
GetVersionEx verSelect Case ver.dwPlatformId
Case 1
Select Case ver.dwMinorVersion
Case 0
ver.osName = "Windows 95"
Case 10
ver.osName = "Windows 98"
Case 90
ver.osName = "Windows Mellinnium"
End Select
Case 2
Select Case ver.dwMajorVersion
Case 3
ver.osName = "Windows NT 3.51"
Case 4
ver.osName = "Windows NT 4.0"
Case 5
If ver.dwMinorVersion = 0 Then
ver.osName = "Windows 2000"
Else
ver.osName = "Windows XP"
End If
End Select
Case Else
ver.osName = "未知系统系统版本"
End SelectGetWindowsVersion = ver
End Function
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End TypePrivate Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As Long
Public Function Get_OS() As String
Dim OSString$, OSVersion As OSVERSIONINFO, BuildNr&
OSVersion.dwOSVersionInfoSize = Len(OSVersion)
Call GetVersionEx(OSVersion)
OSString = "Unbekanntes Betriebssystem" With OSVersion
If (.dwBuildNumber And &HFFFF&) > &H7FFF Then
BuildNr = (.dwBuildNumber And &HFFFF&) - &H10000
Else
BuildNr = .dwBuildNumber And &HFFFF&
End If
If .dwPlatformId = VER_PLATFORM_WIN32_NT Then
If .dwMajorVersion = 4 Then
OSString = "Windows NT"
ElseIf .dwMajorVersion = 5 Then
If .dwMinorVersion = 0 Then
OSString = "Windows 2000"
ElseIf .dwMinorVersion = 1 Then
OSString = "Windows XP"
End If
End If
ElseIf .dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then
If (.dwMajorVersion > 4) Or (.dwMajorVersion = 4 And _
.dwMinorVersion = 10) Then
If BuildNr = 1998 Then
OSString = "Windows 98"
Else
OSString = "Windows 98 SE"
End If
ElseIf (.dwMajorVersion = 4 And .dwMinorVersion = 0) Then
OSString = "Windows 95"
ElseIf (.dwMajorVersion = 4 And .dwMinorVersion = 90) Then
OSString = "Windows ME"
End If
ElseIf .dwPlatformId = VER_PLATFORM_WIN32s Then
OSString = "Windows 32s"
End If
End With
Get_OS = OSString
End Function
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
osName As String
End TypePublic Function GetWindowsVersion() As OSVERSIONINFO
Dim ver As OSVERSIONINFO
ver.dwOSVersionInfoSize = 148
GetVersionEx ver
With ver
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
Select Case .dwMinorVersion
Case 0
.osName = "Windows 2000"
Case 1
.osName = "Windows XP"
Case 2
.osName = "Windows Server 2003"
End Select
End Select
Case Else
.osName = "Failed"
End Select
End With
GetWindowsVersion = ver
End Function
Dim ver As OSVERSIONINFO
ver = GetWindowsVersion()
With ver
Label1.Caption = .osName
End With
End Sub
Private Sub Command1_Click()
Dim i As Integer
i = Me.SysInfo1.OSPlatform
If i = 0 Then
MsgBox "操作系统为WIN95。"
End If
If i = 1 Then
MsgBox "操作系统为WIN98。"
End If
If i = 2 Then
MsgBox "操作系统为WIN2000或WINXP。"
End If
End Sub