精華區beta Programming 關於我們 聯絡資訊
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