C#获取本机CPU、内存信息类
2011-04-10 15:41
225 查看
转自:http://www.kernel2heart.com/2010/08/c-sharp-get-pc-cpu-memory-class/
代码写的很烂,多多包涵就是了,用起来感觉还可以,需要几个using:
其中System.Management需要手工添加,发布时,需要附带System.Management.dll。
代码写的很烂,多多包涵就是了,用起来感觉还可以,需要几个using:
using System.Runtime.InteropServices; using System.Management;
其中System.Management需要手工添加,发布时,需要附带System.Management.dll。
public class SystemInfo { [StructLayout(LayoutKind.Sequential)] private struct MEMORY_INFO { 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")] private static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo); private int m_ProcessorCount = 0; //CPU个数 private PerformanceCounter pcCpuLoad; //CPU计数器 private long m_PhysicalMemory = 0; //物理内存 #region 构造函数 public SystemInfo() { //初始化CPU计数器 pcCpuLoad = new PerformanceCounter("Processor", "% Processor Time", "_Total"); pcCpuLoad.MachineName = "."; pcCpuLoad.NextValue(); //CPU个数 m_ProcessorCount = Environment.ProcessorCount; //获得物理内存 ManagementClass mc = new ManagementClass("Win32_ComputerSystem"); ManagementObjectCollection moc = mc.GetInstances(); foreach (ManagementObject mo in moc) { if (mo["TotalPhysicalMemory"] != null) { m_PhysicalMemory = long.Parse(mo["TotalPhysicalMemory"].ToString()); } } } #endregion #region CPU个数 /// /// 获取CPU个数 /// public int ProcessorCount { get { return m_ProcessorCount; } } #endregion #region CPU占用率 /// /// 获取CPU占用率 /// public float CpuLoad { get { return pcCpuLoad.NextValue(); } } #endregion #region 可用内存 /// /// 获取可用内存 /// public long MemoryAvailable { get { long availablebytes = 0; ManagementClass mos = new ManagementClass("Win32_OperatingSystem"); foreach (ManagementObject mo in mos.GetInstances()) { if (mo["FreePhysicalMemory"] != null) { availablebytes = 1024 * long.Parse(mo["FreePhysicalMemory"].ToString()); } } return ((availablebytes / 1024) / 1024); } } #endregion #region 物理内存 /// /// 获取物理内存 /// public int PhysicalMemory { get { double temp = Math.Round(float.Parse(((m_PhysicalMemory / 1024) / 1024).ToString()) / 1024); return int.Parse(temp.ToString()); } } #endregion #region 物理内存占用率 /// /// 获取物理内存占用率 /// public uint PhysicalMemoryLoad { get { MEMORY_INFO MemInfo = new MEMORY_INFO(); GlobalMemoryStatus(ref MemInfo); return MemInfo.dwMemoryLoad; } } #endregion }
相关文章推荐
- C#获取CPU占用率、内存占用、磁盘占用、进程信息
- C#获取特定进程CPU和内存使用率
- C#获取硬盘编号、CPU编号及类型、内存大小及使用情况
- C#获取硬盘编号、CPU编号及类型、内存大小及使用情况
- C#获取CPU占用率、内存占用、磁盘占用、进程信息
- C#中如何获取系统版本,内存大小,显卡类型,CPU型号
- C#获取CPU占用率、内存占用、磁盘占用、进程信息
- C# 获取计算机cpu,硬盘,内存相关的信息
- C#获取系统版本、内存大小、显卡类型、cpu型号
- c# WMI获取机器硬件信息(硬盘,cpu,内存等)
- C#获取硬盘编号、CPU编号及类型、内存大小及使用情况
- c# 获取机器硬件信息 (硬盘,cpu,内存等)
- C#获取CPU占用率、内存占用、磁盘占用、进程信息
- C#异步回调实例 持续获取CPU、内存使用率
- C#获取CPU占用率、内存占用、磁盘占用、进程信息
- C#实现获取硬盘编号、CPU编号及类型、内存大小及使用情况
- C#获取计算机硬件信息(CPU,网卡,硬盘,内存等)
- C#获取硬盘编号、CPU编号及类型、内存大小及使用情况
- C#获取特定进程CPU和内存使用率
- C#2.0 获取服务器CPU及内存使用情况