得知電腦的系統

如何得知電腦的系統是否Windows98?或者是Windows NT等?這問題也許大家也想知吧!首先要用到API函數GetVersionEx:

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 Sub Command1_Click()
Dim SysInfo As OSVERSIONINFO
 SysInfo.dwOSVersionInfoSize = Len(SysInfo)
 GetVersionEx SysInfo
 Print SysInfo.dwBuildNumber
 Print SysInfo.dwMajorVersion
 Print SysInfo.dwMinorVersion
 Print SysInfo.dwPlatformId
 Print SysInfo.szCSDVersion
End Sub

最後,您會看到用一些傳回值,看看系統資訊,有些數值正好和第一行的數值一樣,因此我們就可以憑著dwPlatformId、dwMajorVersion和dwMinorVersion查出系統是甚麼形號了!以下是一些資料,但不齊全,希望各位看過本文的網友提供!
 
System: dwPlatformId: dwMajorVersion: dwMinorVersion:
Win3.1 0 不明 不明
Windows95 1 不明 0
Windows98 1 4 10
WindowsNT 2 不明 不明
WindowsME 1 不明 不明(不等於0)
Windows2000 不明 不明 不明

於是我們可以寫以下副程式檢查系統:

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

Private Sub Form_Load()
Dim SysInfo As OSVERSIONINFO
 SysInfo.dwOSVersionInfoSize = Len(SysInfo)
 GetVersionEx SysInfo
 Select Case SysInfo.dwPlatformId
  Case 0
   Print "Win3.1"
  Case 1
   If SysInfo.dwMinorVersion = 0 Then
    Print = "Win95"
   Else
    Print = "Win98/WinMe"
   End If
  Case 2
   Print = "NT"
 End Select
End Sub


上一頁