如何通过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 方式获得
// 定义结构和方法[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;