请问有没有简单的方法可以知道当前系统是win98还是win2k、xp、2003?

解决方案 »

  1.   

    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 OSInfo As OSVERSIONINFO, PId As String
        'KPD-Team 1998
        'URL: http://www.allapi.net/
        '[email protected]
        'Set the graphical mode to persistent
        Me.AutoRedraw = True
        'Set the structure size
        OSInfo.dwOSVersionInfoSize = Len(OSInfo)
        'Get the Windows version
        Ret& = GetVersionEx(OSInfo)
        'Chack for errors
        If Ret& = 0 Then MsgBox "Error Getting Version Information": Exit Sub
        'Print the information to the form
        Select Case OSInfo.dwPlatformId
            Case 0
                PId = "Windows 32s "
            Case 1
                PId = "Windows 95/98"
            Case 2
                PId = "Windows NT "
        End Select
        Print "OS: " + PId
        Print "Win version:" + Str$(OSInfo.dwMajorVersion) + "." + LTrim(Str(OSInfo.dwMinorVersion))
        Print "Build: " + Str(OSInfo.dwBuildNumber)
    End Sub
      

  2.   

    Environ(10)?
    太绝对了吧?环境变量不建议这样用!
      

  3.   


    下面这个可以给你回答了,在窗体上放一个ListBox,代码如下:Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As LongPrivate 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 TypePrivate 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 = "获取系统版本失败"
            End Select
        End With
        GetWindowsVersion = ver
    End FunctionPrivate Sub Form_Load()
        List1.Clear
        Dim ver As OSVERSIONINFO
        ver = GetWindowsVersion()
        With ver
            List1.AddItem .osName
            List1.AddItem .dwMajorVersion
            List1.AddItem .dwMinorVersion
            List1.AddItem .dwBuildNumber
            List1.AddItem .dwPlatformId
            List1.AddItem .szCSDVersion
        End With
    End Sub
      

  4.   

    回复人: homezj(小吉)
       Environ(10)?
    太绝对了吧?环境变量不建议这样用!
    ===========================================
    这样呢?    Debug.Print Environ("OS")
      
     
      

  5.   

    下面这个可以给你回答了,在窗体上放一个ListBox,代码如下:Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As LongPrivate 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 TypePrivate 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 = "获取系统版本失败"
            End Select
        End With
        GetWindowsVersion = ver
    End FunctionPrivate Sub Form_Load()
        List1.Clear
        Dim ver As OSVERSIONINFO
        ver = GetWindowsVersion()
        With ver
            List1.AddItem .osName
            List1.AddItem .dwMajorVersion
            List1.AddItem .dwMinorVersion
            List1.AddItem .dwBuildNumber
            List1.AddItem .dwPlatformId
            List1.AddItem .szCSDVersion
        End With
    End Sub
      

  6.   

    Debug.Print Environ("OS")
    这个很对哦
      

  7.   


    Debug.Print Environ("OS") -> Windows_NT并不返回具体的系统类型
      

  8.   

    Environ("OS")要好一些,基本可用,只是不太严谨。环境变量随系统不同会有很多差异,可变性也较大,它有点象,在程序中用"c:\windows"做为Win目录一样,在大多数正常系统中没问题,但出现意外的概率也较高。