Private Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO)
Private Type SYSTEM_INFO
    dwOemID As Long
    dwPageSize As Long
    lpMinimumApplicationAddress As Long
    lpMaximumApplicationAddress As Long
    dwActiveProcessorMask As Long
    dwNumberOrfProcessors As Long
    dwProcessorType As Long
    dwAllocationGranularity As Long
    dwReserved As Long
End Type
Private Sub Form_Load()
    Dim SInfo As SYSTEM_INFO
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    '[email protected]
    'Set the graphical mode to persistent
    Me.AutoRedraw = True
    'Get the system information
    GetSystemInfo SInfo
    'Print it to the form
    Me.Print "Number of procesor:" + str$(SInfo.dwNumberOrfProcessors)
    Me.Print "Processor:" + str$(SInfo.dwProcessorType)
    Me.Print "Low memory address:" + str$(SInfo.lpMinimumApplicationAddress)
    Me.Print "High memory address:" + str$(SInfo.lpMaximumApplicationAddress)
End Sub

解决方案 »

  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
    Const VER_PLATFORM_WIN32s = 0
    Const VER_PLATFORM_WIN32_WINDOWS = 1
    Const VER_PLATFORM_WIN32_NT = 2
    Dim OSInfo As OSVERSIONINFO'*** 获取显示器等资源信息
    Private Declare Function GetDesktopWindow Lib "user32" () As Long
    Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
    Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
    '***获取计算机名称
    Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long'***获取磁盘剩余空间
    Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTotalNumberOfClusters As Long) As Long'***获取内存状况
    Private Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As MEMORYSTATUS)
    Private Type MEMORYSTATUS
        dwLength As Long
        dwMemoryLoad As Long
        dwTotalPhys As Long
        dwAvailPhys As Long
        dwTotalPageFile As Long
        dwAvailPageFile As Long
        dwTotalVirtual As Long
        dwAvailVirtual As Long
    End Type
    Dim lpInfoBuffer As MEMORYSTATUS
    Dim hdesktopwnd
    Dim hdccapsPublic Sub DeviceInfo()
        
        Dim DisplayBits
        Dim DisplayPlanes
        Dim DisplayWidth
        Dim DisplayHeight
        Dim RetVal
        '获取窗口的设备场景
        hdccaps = GetDC(hdesktopwnd)
        
        '像素
        DisplayBits = GetDeviceCaps(hdccaps, 12)    '
        DisplayPlanes = GetDeviceCaps(hdccaps, 14)    '以像素为单位的显示宽度
        DisplayWidth = GetDeviceCaps(hdccaps, 8)    '以像素为单位的显示高度
        DisplayHeight = GetDeviceCaps(hdccaps, 10)
        
        '释放由调用GetDC函数获取的指定设备场景
        RetVal = ReleaseDC(hdesktopwnd, hdccaps)
        '确定颜色数If DisplayBits = 1 Then
    If DisplayPlanes = 1 Then    '黑白模式
        lblRes = "1 位/2 黑白模式"    ElseIf DisplayPlanes = 4 Then    '16色模式
        lblRes = "4 位/16 色"
    End IfElseIf DisplayBits = 8 Then    '256色模式
        
        lblRes = "8 位/256 色"
    ElseIf DisplayBits = 16 Then
       '真彩色16位模式
        lblRes = "真彩色16位/65,000 色"
    ElseIf DisplayBits = 32 Then
       '真彩色32位模式
        lblRes = "真彩色32位/16,000,000 色"
    Else
        '未知模式
        lblRes = "未知模式"End IfEnd Sub
    Function sGetComputerName() As String
      Dim sBuffer As String
      Dim lBufSize As Long
      Dim lStatus As Long
      
      lBufSize = 255
      sBuffer = String$(lBufSize, " ")
      lStatus = GetComputerName(sBuffer, lBufSize)
      sGetComputerName = ""
      If lStatus <> 0 Then
         sGetComputerName = Left(sBuffer, lBufSize)
      End If
      Form1.lblName = sGetComputerName
      
    End Function
    Public Function DiskSpace(DrivePath As String) As Double
    ' 通过驱动器符号获取它的剩余空间
      Dim Drive As String
      Dim SectorsPerCluster As Long, BytesPerSector As Long
      Dim NumberOfFreeClusters As Long, TotalClusters As Long, Sts As Long
      Dim DS  Drive = Left(Trim(DrivePath), 1) & ":\"     '确认位于根目录
      Sts = GetDiskFreeSpace(Drive, SectorsPerCluster, BytesPerSector, NumberOfFreeClusters, TotalClusters)
      If Sts <> 0 Then
        DiskSpace = SectorsPerCluster * BytesPerSector * NumberOfFreeClusters
        DS = Format$(DiskSpace, "###,###")
        lblSpace = DS & " bytes"
      Else
        DiskSpace = -1        '出错将调用GetLastError
      End If
    End Function
    Private Sub Command1_Click()
     Unload Me
    End Sub
    Private Sub Form_Load()'计算机名称
    Dim a
    a = sGetComputerName
    Dim OSName As String
    '操作系统版本
    Dim RetVal As Long
    RetVal = GetVersionEx(OSInfo)
    OSInfo.dwOSVersionInfoSize = 148
    OSInfo.szCSDVersion = Space(128)
    RetVal = GetVersionEx(OSInfo)
    Select Case OSInfo.dwPlatformID
           Case VER_PLATFORM_WIN32s
                OSName = "Windows 3.1"
           Case VER_PLATFORM_WIN32_WINDOWS
                OSName = "Windows 98"
           Case VER_PLATFORM_WIN32_NT
                OSName = "Windows NT"
    End Select
    lblVersion.Caption = OSName & "(" & OSInfo.dwMajorVersion & "." & OSInfo.dwMinorVersion & ")"Dim X As Variant
    X = DiskSpace("c")Call DeviceInfoEnd Sub
    Private Sub Timer1_Timer()
    '系统时间
    lblTime.Caption = Time'内存
    lpInfoBuffer.dwLength = Len(lpInfoBuffer)
    GlobalMemoryStatus lpInfoBuffer
    lblUsedMem.Caption = lpInfoBuffer.dwMemoryLoad & " % used"
    lblTotalPhys.Caption = lpInfoBuffer.dwTotalPhys / 1024 & " KByte"
    lblAvailPhys.Caption = lpInfoBuffer.dwAvailPhys / 1024 & " KByte"
    lblTotalPageFile.Caption = lpInfoBuffer.dwTotalPageFile / 1024 & " KByte"
    lblAvailPageFile.Caption = lpInfoBuffer.dwAvailPageFile / 1024 & " KByte"
    lblTotalVirt = lpInfoBuffer.dwTotalVirtual / 1024 & " KByte"
    lblAvailVirt = lpInfoBuffer.dwAvailVirtual / 1024 & " KByte"'日期
    Dim day As String
    Dim n As Integer
    n = Weekday(Date)
    If n = 1 Then day = "Sunday"
    If n = 2 Then day = "Monday"
    If n = 3 Then day = "Tuesday"
    If n = 4 Then day = "Wednesday"
    If n = 5 Then day = "Thursday"
    If n = 6 Then day = "Friday"
    If n = 7 Then day = "Saturday"
    lblDate.Caption = day & ", " & DateEnd Sub
      

  2.   

    为何GetSystemInfo SInfo而GetSystemInfo (SInfo)就不行呢?另外,Private Declare Sub GetSystemInfo Lib "kernel32" () as SYSTEM_INFO
    我改了之后发现一样可以 .哈哈
      

  3.   

    GetSystemInfo (SInfo)这样的用法必须有返回值啊,这是vb的规定呀