IMHOINOYB 撰寫於文章 <3SNj97$tz1@bear.lib.ntttc.edu.tw>...
>※ 引述《nciacn.bbs@BBS.me.nctu.edu.tw (Nciacn)》之銘言:
>: 程式中如何辨別現在是 95 還是 98 勒?
>
>Win32API:
>GetVersionEx
>應可參考用用。不曉得win98裡get出來的plateform id會是什麼....
Option Explicit
Private Const VER_PLATFORM_WIN32_NT = 2
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const VER_PLATFORM_WIN32s = 0
'此二常數為使用者自行宣告常數,因為 OSVERSIONINFO 的 dwPlatformId 變數在 95
和 98
'都是傳回 1,必須靠 dwMinorVersion 傳回值來輔助判別,OS 95 dwMinorVersion= 0
'OS 98 dwMinorVersion= 10
Private Const WIN32_WINDOWSEX_95 = 0
Private Const WIN32_WINDOWSEX_98 = 10
'VB API 檢視員中 GetVersionEx 函數 lpVersionInformation 參數前是有 Byval 傳
值
'設定的,但因在 VB 裏使用者自訂型態變數是無法用傳值傳到 API 裏,所以要銷去
'lpVersionInformation 前的 Byval 敘述,改用傳址遞送,才能正確。
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
Dim Ver As OSVERSIONINFO
Private Sub Form_Load()
Dim VerName As String
Ver.dwOSVersionInfoSize = Len(Ver)
GetVersionEx Ver
Debug.Print "----Your Windows Version Info----"
Debug.Print "版本主編號:" & Ver.dwMajorVersion
Debug.Print "版本次編號:" & Ver.dwMinorVersion
Debug.Print "版本建立編號:" & Ver.dwBuildNumber
Debug.Print "作業平台識別號:" & Ver.dwPlatformId
Debug.Print "版本進一步說明:" & Ver.szCSDVersion
'執行判別 Windows Version 的自訂函數
VerName = GotWinPlatFormName(Ver.dwPlatformId, Ver.dwMinorVersion)
If VerName <> "" Then
Debug.Print "--------" & VerName & "--------"
Else
Debug.Print "------無法判別的 Windows 版本------"
End If
End Sub
'判別 Windows Version 的自訂函數
'參數 PlatFormId:OSVERSIONINFO 的 dwPlatformId 值
'參數 MinorVer:OSVERSIONINFO 的 dwMinorVersion 值
Private Function GotWinPlatFormName(ByVal PlatFormId As Long, _
ByVal MinorVer As Long) As String
Dim ReturnString As String
Select Case PlatFormId
Case VER_PLATFORM_WIN32_NT
ReturnString = "Windows NT"
Case VER_PLATFORM_WIN32_WINDOWS
Select Case MinorVer
Case WIN32_WINDOWSEX_95
ReturnString = "Windows 95"
Case WIN32_WINDOWSEX_98
ReturnString = "Windows 98"
End Select
Case VER_PLATFORM_WIN32s
ReturnString = "Windows 32s"
End Select
GotWinPlatFormName = ReturnString
End Function