首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获得计算机的RAM总量?

如何获得计算机的RAM总量?
EN

Stack Overflow用户
提问于 2008-09-19 20:00:40
回答 16查看 146.8K关注 0票数 91
代码语言:javascript
复制
counter.CategoryName = "Memory";
counter.Countername = "Available MBytes";

但我似乎找不到一种方法来获得内存总量。我该怎么做呢?

更新:

MagicKat:我在搜索时看到了这个问题,但它不起作用--“你是不是缺少一个程序集或引用?”

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2008-09-19 20:09:00

可以使用p/invoke调用Windows API函数GlobalMemoryStatusEx

代码语言:javascript
复制
  [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
  private class MEMORYSTATUSEX
  {
     public uint dwLength;
     public uint dwMemoryLoad;
     public ulong ullTotalPhys;
     public ulong ullAvailPhys;
     public ulong ullTotalPageFile;
     public ulong ullAvailPageFile;
     public ulong ullTotalVirtual;
     public ulong ullAvailVirtual;
     public ulong ullAvailExtendedVirtual;
     public MEMORYSTATUSEX()
     {
        this.dwLength = (uint)Marshal.SizeOf(typeof(NativeMethods.MEMORYSTATUSEX));
     }
  }


  [return: MarshalAs(UnmanagedType.Bool)]
  [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  static extern bool GlobalMemoryStatusEx([In, Out] MEMORYSTATUSEX lpBuffer);

然后使用like:

代码语言:javascript
复制
ulong installedMemory;
MEMORYSTATUSEX memStatus = new MEMORYSTATUSEX();
if( GlobalMemoryStatusEx( memStatus))
{ 
   installedMemory = memStatus.ullTotalPhys;
}

或者,您可以使用WMI (托管但速度较慢)来查询Win32_ComputerSystem类中的TotalPhysicalMemory

票数 64
EN

Stack Overflow用户

发布于 2008-09-19 20:06:28

添加对Microsoft.VisualBasicusing Microsoft.VisualBasic.Devices;的引用。

ComputerInfo类包含您需要的所有信息。

票数 184
EN

Stack Overflow用户

发布于 2008-09-19 21:44:00

添加对Microsoft.VisualBasic.dll的引用,就像上面提到的那样。然后,获取总物理内存就像这样简单(是的,我测试了它):

代码语言:javascript
复制
static ulong GetTotalMemoryInBytes()
{
    return new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory;
}
票数 64
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/105031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档