下面这段代码可以判断win95/98和nt,但是xp我不知道行不行
Private Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End TypePrivate Declare Function GetVersionEx Lib "kernel32" Alias _
    "GetVersionExA" (lpVersionInformation As _
    OSVERSIONINFO) As BooleanPrivate Const VER_PLATFORM_WIN32s = 0
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const VER_PLATFORM_WIN32_NT = 2Private Sub Command1_Click()
    Dim Ver As OSVERSIONINFO
    Ver.dwOSVersionInfoSize = Len(Ver)
    Call GetVersionEx(Ver)
    If Ver.dwPlatformId = 0 Then
        MsgBox "Win32"
    ElseIf Ver.dwPlatformId = 1 Then
        MsgBox "Win95,Win98"
    ElseIf Ver.dwPlatformId = 2 Then
        MsgBox "Winnt"
    Else
        MsgBox "Error"
    End If
End Sub

解决方案 »

  1.   

    GetSystemInfo VB声明 
    Declare Sub GetSystemInfo Lib "kernel32" Alias "GetSystemInfo" (lpSystemInfo As SYSTEM_INFO) 
    说明 
    在一个SYSTEM_INFO结构中载入与底层硬件平台有关的信息 
    参数表 
    参数 类型及说明 
    lpSystemInfo SYSTEM_INFO,指定一个结构,用于装载适当的系统信息 
    SYSTEM_INFO 类型定义 
    Type SYSTEM_INFO ' 36 Bytes 
    dwOemID As Long
    dwPageSize As Long
    lpMinimumApplicationAddress As Long
    lpMaximumApplicationAddress As Long
    dwActiveProcessorMask As Long
    dwNumberOrfProcessors As Long
    dwProcessorType As Long
    dwAllocationGranularity As Long
    wProcessorLevel As Integer
    wProcessorRevision As Integer
    End Type 
    说明 
    This structure contains information regarding the current computer system.
     
    字段表 
    字段 类型与说明 
    dwOemID Long,System processor used. In Windows 95, this value is always set to zero (PROCESSOR_ARCHITECTURE_INTEL). In Windows NT, this value may be one of the following : PROCESSOR_ARCHITECTURE_INTEL, PROCESSOR_ARCHITECTURE_MIPS, PROCESSOR_ARCHITECTURE_ALPHA, PROCESSOR_ARCHITECTURE_PPC 
    dwPageSize Long,Page size used. Also specifies the granularity of page protection and commitment. 
    lpMinimumApplicationAddress Long,Contains the lowest memory address that applications and dynamic link libraries (DLLs) can access. 
    lpMaximumApplicationAddress Long,Contains the highest memory address that applications and DLLs can access. 
    dwActiveProcessorMask Long,Contains a mask representing the set of processors available on the system. Processor zero is indicated by bit zero being set. 
    dwNumberOrfProcessors Long,The number of processors in this system. 
    dwProcessorType Long,Obsolete, but maintained for backward compatibility. Can be one of the following values: PROCESSOR_INTEL_386, PROCESSOR_INTEL_486, PROCESSOR_INTEL_PENTIUM. The following are valid on Windows NT systems only: PROCESSOR_MIPS_R4000, PROCESSOR_ALPHA_21046 
    dwAllocationGranularity Long,Contains the allocation granularity used to allocate memory. This value is usually set to 64K. 
    wProcessorLevel Integer,Specifies the processor level. This value depends on the PROCESSOR_ARCHITECTURE_* value in the dwOemID field. For PROCESSOR_ARCHITECTURE_INTEL, the valid values are currently: 3 for a 386 CPU, 4 for a 486 CPU, and 5 for a Pentium. 
    wProcessorRevision Integer,Specifies the processor revision. This value depends on the PROCESSOR_ARCHITECTURE_* value in the dwOemID field. 
      

  2.   

    right,
    不过,XP我也没试过
      

  3.   

    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是什么可以看
       Print "Win version:" + str$(OSInfo.dwMajorVersion) + "." + LTrim(str(OSInfo.dwMinorVersion))4.9 & win05/98就是me
    5.1 & winnt 就是xp