'以下为获取操作系统版本声明
Private Type OSVERSIONINFO
   dwOSVersionInfoSize  As Long 'Specifies the length, in bytes, of the structure.
   dwMajorVersion       As Long 'Major Version Number
   dwMinorVersion       As Long 'Minor Version Number
   dwBuildNumber        As Long 'Build Version Number
   dwPlatformId         As Long 'Operating System Running, see below
   szCSDVersion As String * 128 'Windows NT: Contains a null-terminated string,
                                'such as "Service Pack 3", that indicates the latest
                                'Service Pack installed on the system.
                                'If no Service Pack has been installed, the string is empty.
                                'Windows 95: Contains a null-terminated string that provides
                                'arbitrary additional information about the operating system
End TypePrivate Const hNull = 0'  dwPlatformId defines:
Public Enum enuOSVersion
    VER_PLATFORM_WIN32s = 0            'Win32s on Windows 3.1.
    VER_PLATFORM_WIN32_WINDOWS = 1     'Win32 on Windows 95 or Windows 98.
                                                'For Windows 95, dwMinorVersion is 0.
                                                'For Windows 98, dwMinorVersion is 1.
    VER_PLATFORM_WIN32_NT = 2          'Win32 on Windows NT.
End EnumPrivate Declare Function GetVersionExA Lib "kernel32" _
   (lpVersionInformation As OSVERSIONINFO) As Integer
'获取操作系统版本
Public Function GetOSVersion(Optional sInfo As String) As enuOSVersion
    '=======================================
    'Returns the Operating System being used
    '1 = Windows 95 / Windows 98
    '2 = Windows NT
    '=======================================
    Dim osinfo   As OSVERSIONINFO
    Dim retvalue As Integer
    
    With osinfo
        .dwOSVersionInfoSize = 148
        .szCSDVersion = Space$(128)
        retvalue = GetVersionExA(osinfo)
        GetOSVersion = .dwPlatformId
        sInfo = "版本 " & .dwMajorVersion & "." & .dwMinorVersion & " (Build " & .dwBuildNumber & ": " & StrZToStr(.szCSDVersion) & ")"
    End With
End FunctionPrivate Function StrZToStr(s As String) As String
    If InStr(1, s, Chr$(0)) > 0 Then
        StrZToStr = Left$(s, InStr(1, s, Chr$(0)) - 1)
    Else
        StrZToStr = s
    End If
End Function

解决方案 »

  1.   

    请问:GetOSVersion中的参数sInfo我应该怎样给?
      

  2.   

    To: enmity
        本人没有QQ,听说QQ现在只能通过声讯台和手机注册,因为这样Tencent可以赚到注册费,我看Tencent能狂到什么时候To:luoxiang2000
        sInfo是一个字符串,是返回数据用的,里面包括版本号和操作系统描述等
      

  3.   

    to ltpao(啊炮):
    恕我菜!你把写在这一行(Public Function GetOSVersion(Optional sInfo As String) As enuOSVersion),就我理解,这个sInfo应该是要传入的变量呀?也就是说,他要在你调用时由你给出呀?
      

  4.   

    对,调用数声明一个变量来接收该参数就可以了
    Dim sRet As String,lRet As Long
    lRet=GetOSVersion(sRet)
      

  5.   

    GetVersion VB声明 
    Declare Function GetVersion Lib "kernel32" Alias "GetVersion" () As Long 
    说明 
    判断当前运行的Windows和DOS版本 
    返回值 
    Long,低16位包含了windows版本;低字节包含了主版本号(3代表windows 3.10,4代表nt 4.0);高字节包含了两个数位的辅助版本号(10代表windows 3.10,95代表windows 95)。高16位则包含了平台信息。针对windows NT,高位设为0;针对windows for workgroups上运行的Win32s,则高位为1 
    注解 
    在win32下,最好换用GetVersionEx函数。在win32下,高字不会返回DOS版本