热情软件屋

 

如何获得计算机配置的物理内存的大小


编号:QA002480
建立日期: 2000年1月23日 最后修改日期:2002年3月24日
所属类别:

PengZhiHua:
    编程工具: VB5.0
    操作系统: Windows9x
    问题:请问如何在VB程序中获得计算机配置的物理内存的大小? 谢谢

回答:

    可以使用API函数GlobalMemoryStatus获得内存信息。
    例子:
    1. 建立一个新工程。
    2. 添加一个模块到工程。
    3. 添加下面的代码到Module1中:
     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
     Type OSVERSIONINFO
     dwOSVersionInfoSize As Long
     dwMajorVersion As Long
     dwMinorVersion As Long
     dwBuildNumber As Long
     dwPlatformId As Long
     szCSDVersion As String * 128
     End Type
     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
    
     Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _
     (LpVersionInformation As OSVERSIONINFO) As Long
     Declare Sub GlobalMemoryStatus Lib "kernel32" (lpBuffer As _
     MEMORYSTATUS)
     Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As _
     SYSTEM_INFO)
    
     Public Const PROCESSOR_INTEL_386 = 386
     Public Const PROCESSOR_INTEL_486 = 486
     Public Const PROCESSOR_INTEL_PENTIUM = 586
     Public Const PROCESSOR_MIPS_R4000 = 4000
     Public Const PROCESSOR_ALPHA_21064 = 21064
    

    4. 输入下面的代码到Form1的Form_Load过程:
     Private Sub Form_Load()
     Dim msg As String ' 状态信息
     Dim nl As String ' 新行
     nl = Chr$(13) + Chr$(10)
    
     Show
     MousePointer = 11 ' 漏斗
    
     ' 获得操作系统信息
     Dim verinfo As OSVERSIONINFO
     verinfo.dwOSVersionInfoSize = Len(verinfo)
     ret% = GetVersionEx(verinfo)
     If ret% = 0 Then
     MsgBox "错误:获得版本信息"
     End
     End If
     Select Case verinfo.dwPlatformId
     Case 0
     msg = msg + "Windows 32s "
     Case 1
     msg = msg + "Windows 95 "
     Case 2
     msg = msg + "Windows NT "
     End Select
    
     ver_major$ = verinfo.dwMajorVersion
     ver_minor$ = verinfo.dwMinorVersion
     build$ = verinfo.dwBuildNumber
     msg = msg + ver_major$ + "." + ver_minor$
     msg = msg + " (Build " + build$ + ")" + nl + nl
    
     ' 获得CPU类型
     Dim sysinfo As SYSTEM_INFO
     GetSystemInfo sysinfo
     msg = msg + "CPU: "
     Select Case sysinfo.dwProcessorType
     Case PROCESSOR_INTEL_386
     msg = msg + "Intel 386" + nl
     Case PROCESSOR_INTEL_486
     msg = msg + "Intel 486" + nl
     Case PROCESSOR_INTEL_PENTIUM
     msg = msg + "Intel Pentium" + nl
     Case PROCESSOR_MIPS_R4000
     msg = msg + "MIPS R4000" + nl
     Case PROCESSOR_ALPHA_21064
     msg = msg + "DEC Alpha 21064" + nl
     Case Else
     msg = msg + "(unknown)" + nl
    
     End Select
     msg = msg + nl
     ' 获得剩余内存
     Dim memsts As MEMORYSTATUS
     Dim memory&
     GlobalMemoryStatus memsts
     memory& = memsts.dwTotalPhys
     msg = msg + "Total Physical Memory: "
     msg = msg + Format$(memory& \ 1024, "###,###,###") + "K" + nl
     memory& = memsts.dwAvailPhys
     msg = msg + "Available Physical Memory: "
     msg = msg + Format$(memory& \ 1024, "###,###,###") + "K" + nl
     memory& = memsts.dwTotalVirtual
     msg = msg + "Total Virtual Memory: "
     msg = msg + Format$(memory& \ 1024, "###,###,###") + "K" + nl
     memory& = memsts.dwAvailVirtual
     msg = msg + "Available Virtual Memory: "
     msg = msg + Format$(memory& \ 1024, "###,###,###") + "K" + nl _
     + nl
    
     ' 获得剩余的系统内存
     ' 不适用Windows NT
     MsgBox msg, 0, "About " + Caption
     MousePointer = 0
     End Sub
    

    
    5. 按F5运行程序。

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio