32位系统,通过GlobalMemoryStatusEx来获取物理内存大小
但获取到的是系统识别出的大小,而非实际的大小
比如我的是4G的条子,但只能识别出3.5G,不知道有什么办法获取物理内存实际的大小?

解决方案 »

  1.   

    通过WMI进行访问,可以获得物理内存的实际大小。可以编写vbs脚本,也可以通过delphi编程进行访问。
      

  2.   

    确实用wmi
    SELECT TotalPhysicalMemory FROM Win32_ComputerSystem
    是可以的
      

  3.   

    这不是sql,是一种类似于linq的语句,目的是从得到的wmi对象结果集中返回查询结果
      

  4.   

    wmivb和C#的资料很多,delphi的很少
    这里有个例子,看下就明白了
    http://apps.hi.baidu.com/share/detail/17562088
      

  5.   

    wmi要启动服务才能用,这个比较不爽
      

  6.   

    GlobalMemoryStatus不能获取正确的内存吗?不会吧,我这里很正常,下面是返回KBfunction GetWindowsMemory: string;
    var
      Memlnfo:TMEMORYSTATUS;
    begin
      Memlnfo.dwLength:=sizeof(MemoryStatus);
      GlobalMemoryStatus(Memlnfo);
      Result:=Format('%1.0n',[(Memlnfo.dwTotalPhys div 1024)+0.01]);
    end;