读书人

怎么通过WMI查询电脑当前可用内存大小

发布时间: 2012-06-16 20:34:32 作者: rapoo

如何通过WMI查询电脑当前可用内存大小
现在已经查到电脑总的物理内存大小了,查询代码如下:
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_LogicalMemoryConfiguration");

foreach (ManagementObject queryObj in searcher.Get())
{
MessageBox.Show(queryObj["TotalPhysicalMemory"].ToString());
}

但不知道如何查当前剩余可用内存大小,网上看到的方法时查所有已用的,用总内存大小减去已用的来得到,查询语句为:
Select AvailableMBytes from Win32_PerfRawData_PerfOS_Memory

但我将查询总内大小的语句改为上面这语句后,弹出MessageBox.Show(queryObj["AvailableMBytes"].ToString()),程序报错,显示“没效类别”。

请问是怎么回事??正确查询剩余可用内存大小是要怎么查??


[解决办法]
用 winAPI 方式获得

C# code
// 定义结构和方法[StructLayout(LayoutKind.Sequential)]private struct _MEMORYSTATUS{    public uint dwLength;    public uint dwMemoryLoad;    public uint dwTotalPhys;    public uint dwAvailPhys;    public uint dwTotalPageFile;    public uint dwAvailPageFile;    public uint dwTotalVirtual;    public uint dwAvailVirtual;}[DllImport("Kernel32.dll", CallingConvention = CallingConvention.StdCall)]private static extern void GlobalMemoryStatus(ref _MEMORYSTATUS lpBuffer);// 调用代码_MEMORYSTATUS ms = new _MEMORYSTATUS();GlobalMemoryStatus(ref ms);uint 总物理内存 = ms.dwTotalPhys;uint 可用物理内存 = ms.dwAvailPhys; 

读书人网 >C#

热点推荐