系統DLL元件引用。
Option Explicit #If Win64 Then Type OSVERSIONINFO ' 148 Bytes dwOSVersionInfoSize As LongPtr dwMajorVersion As LongPtr dwMinorVersion As LongPtr dwBuildNumber As LongPtr dwPlatformId As LongPtr szCSDVersion As String * 128 End Type Declare PtrSafe Function GetVersionEx Lib "kernel32" _ Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As LongPtr #Else Type OSVERSIONINFO ' 148 Bytes dwOSVersionInfoSize As Long dwMajorVersion As Long dwMinorVersion As Long dwBuildNumber As Long dwPlatformId As Long szCSDVersion As String * 128 End Type Declare Function GetVersionEx Lib "kernel32" _ Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long #End If Sub 執行() Dim Major As Integer, Minor As Integer GetWinVer Major, Minor MsgBox Major & "." & Minor End Sub Function GetWinVer(ByRef Major As Integer, ByRef Minor As Integer) Dim OSVer As OSVERSIONINFO #If Win64 Then Dim rc As LongPtr #Else Dim rc As Long #End If OSVer.dwOSVersionInfoSize = 148 OSVer.szCSDVersion = Space$(128) rc = GetVersionEx(OSVer) With OSVer Major = .dwMajorVersion Minor = .dwMinorVersion Select Case Major + Minor / 10 Case 5# GetWinVer = "Windows 2000" Case 5.1 GetWinVer = "Windows XP (32-bit)" Case 5.2 GetWinVer = "Windows XP (64-bit), 2003 Server, Home Server" Case 6# GetWinVer = "Windows Vista, 2008 Server" Case 6.1 GetWinVer = "Windows 7, 2008 Server R2" Case 6.2 GetWinVer = "Windows 8, 2012 Server" Case 6.3 GetWinVer = "Windows 8.1, 2012 Server R2" Case 10# GetWinVer = "Windows 10, 2013 Server" Case Else GetWinVer = "Other version" End Select End With End Function
參考資料: