call 
void GlobalMemoryStatus(
  LPMEMORYSTATUS lpBuffer
);
typedef struct _MEMORYSTATUS {  DWORD dwLength;  DWORD dwMemoryLoad;  SIZE_T dwTotalPhys;  SIZE_T dwAvailPhys;  SIZE_T dwTotalPageFile;  SIZE_T dwAvailPageFile;  SIZE_T dwTotalVirtual;  SIZE_T dwAvailVirtual;
} MEMORYSTATUS, *LPMEMORYSTATUS;

解决方案 »

  1.   

    哦,学习中.真是太深奥了,本人对于这些很是不懂,但是目前做的项目却与此有密切关系,hdt(倦怠)很感谢你提供的代码,可是这些我在网上也看过,你能否提供一下如何获取核心内存的大小的代码呢?
      

  2.   

    要用到WMI
    不过你要弄清楚你是要显示服务器的信息还是客户机的信息
      

  3.   


            ManagementObjectSearcher searcher = 
    new ManagementObjectSearcher("Select * From CIM_OperatingSystem");
            foreach (ManagementObject mo in searcher.Get())
            {
     mo["FreePhysicalMemory"],剩余物理内存量
     mo["FreeVirtualMemory"],剩余虚拟内存量
     mo["TotalVirtualMemorySize"],总虚拟内存量
     mo["TotalVisibleMemorySize"],总物理内存量
            }
      

  4.   

    to kissknife、 superxiaomm:
    核心内存呢?怎么获得或计算的,请多指教
      

  5.   

    //获取总物理内存大小
     ManagementClass cimobject1 = new ManagementClass("Win32_PhysicalMemory");
     ManagementObjectCollection moc1 = cimobject1.GetInstances();
     foreach (ManagementObject mo1 in moc1) {
            capacity += ((Math.Round(Int64.Parse(mo1.Properties["Capacity"].Value.ToString()) / 1024 / 1024 / 1024.0, 1)));                  
     }
     moc1.Dispose();
     cimobject1.Dispose();
     //获取内存可用大小
     ManagementClass cimobject2 = new ManagementClass("Win32_PerfFormattedData_PerfOS_Memory");
     ManagementObjectCollection moc2 = cimobject2.GetInstances();
     foreach (ManagementObject mo2 in moc2) {
           available += ((Math.Round(Int64.Parse(mo2.Properties["AvailableMBytes"].Value.ToString()) / 1024.0, 1))); }
     moc2.Dispose();
     cimobject2.Dispose();
     Console.WriteLine("MemoryCapacity=" + capacity.ToString() + "G");
     Console.WriteLine("MemoryAvailable=" + available.ToString() + "G");
     Console.WriteLine("MemoryUsed=" + ((capacity - available)).ToString() + "G," + (Math.Round((capacity - available) / capacity * 100,0)).ToString() + "%");