public static class HardwareHelper
{
const int interval = 400;
/// <summary>
/// 磁盘使用情况
/// </summary>
/// <returns></returns>
public static string GetDiskUsage()
{
StringBuilder sb = new StringBuilder();
DriveInfo[] drives = DriveInfo.GetDrives();
int mb = 1024 * 1024;
foreach (DriveInfo drive in drives)
{
if (drive.DriveType == DriveType.Fixed || drive.DriveType == DriveType.Removable)
{
long total = drive.TotalSize / mb;
long totalgb = total / 1024;
long totalFreeSize = drive.TotalFreeSpace / mb;
long totalFreeSizegb = totalFreeSize / 1024;
long freeSpace = drive.AvailableFreeSpace / mb;
long freeSpacegb = freeSpace / 2014;
sb.AppendLine(drive.Name + "(" + drive.VolumeLabel + ")");
string format = string.Format("空间总量:{0} MB({1}GB)", total, totalgb);
sb.AppendLine(format);
format = string.Format("空闲空间:{0} MB({1}GB)", totalFreeSize, totalFreeSizegb);
sb.AppendLine(format);
format = string.Format("可用空闲空间:{0} MB({1}GB)", freeSpace, freeSpacegb);
sb.AppendLine(format);
}
}
return sb.ToString();
}
/// <summary>
/// 获取磁盘的读写速率
/// </summary>
/// <returns></returns>
public static string GetDiskSpeed()
{
StringBuilder sb = new StringBuilder();
PerformanceCounter diskp = new PerformanceCounter("PhysicalDisk", "Disk Read Bytes/sec", "_Total");
Thread.Sleep(interval);
float v1 = diskp.NextValue();
Thread.Sleep(interval);
float v2 = diskp.NextValue();
Thread.Sleep(interval);
float v3 = diskp.NextValue();
Thread.Sleep(interval);
float v4 = diskp.NextValue();
v4 = (v1 + v2 + v3 + v4) / 4;
sb.AppendLine(string.Format("磁盘读写速率:{0}", v4));
return sb.ToString();
}
/// <summary>
/// 获取硬盘信息
/// </summary>
/// <returns></returns>
public static string GetDiskInfo()
{
StringBuilder sb = new StringBuilder();
ManagementClass mgmtClass = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection mgmtObjCol = mgmtClass.GetInstances();
foreach (ManagementObject MGMTOBJ in mgmtObjCol)
{
Console.WriteLine(MGMTOBJ.ToString());
foreach (PropertyData property in MGMTOBJ.Properties)
{
sb.AppendLine("Property Name: " + property.Name + "\tProperty Value: " + property.Value);
}
}
return sb.ToString();
}
/// <summary>
/// cpu使用率
/// </summary>
/// <returns></returns>
public static string GetCPUUsage()
{
PerformanceCounter cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total", true);
Thread.Sleep(interval);
float v1 = cpuCounter.NextValue();
Thread.Sleep(interval);
float v2 = cpuCounter.NextValue();
Thread.Sleep(interval);
float v3 = cpuCounter.NextValue();
Thread.Sleep(interval);
float v4 = cpuCounter.NextValue();
v4 = (v1 + v2 + v3 + v4) / 4;
PerformanceCounter pcCpuLoad = new PerformanceCounter("Processor", "% Processor Time", "_Total")
{
MachineName = "."
};
pcCpuLoad.NextValue();
Thread.Sleep(1000);
float CpuLoad = pcCpuLoad.NextValue();
StringBuilder sb = new StringBuilder();
sb.AppendLine(string.Format("CPU的使用率:{0}%", CpuLoad));
sb.AppendLine(string.Format("CPU的使用率v4:{0}%", v4));
return sb.ToString();
}
/// <summary>
/// cpu info
/// </summary>
/// <returns></returns>
public static string GetCpuInfo()
{
StringBuilder sb = new StringBuilder();
int n = Environment.ProcessorCount;
sb.AppendLine("计算机名:" + Environment.MachineName + "\t\tCPU核:" + n + "个");//另一种方法
double? GHz = null;
using (ManagementClass mc = new ManagementClass("Win32_Processor"))
{
foreach (ManagementObject mo in mc.GetInstances())
GHz = 0.001 * (UInt32)mo.Properties["CurrentClockSpeed"].Value;
}
sb.AppendLine(string.Format("CPU速率:{0}GHz", GHz));
return sb.ToString();
}
/// <summary>
/// 获取物理内存使用情况
/// </summary>
/// <returns></returns>
public static string GetMemoryUseage()
{
// 获取物理内存总大小
ManagementClass mc = new ManagementClass("Win32_PhysicalMemory");
ManagementObjectCollection moc = mc.GetInstances();
double available = 0, capacity = 0;
foreach (ManagementObject mo in moc)
{
double temp = Convert.ToDouble(mo.Properties["Capacity"].Value);
capacity += Math.Round(temp / 1024 / 1024 / 1024, 1);
}
moc.Dispose();
mc.Dispose();
//获取内存可用大小
ManagementClass mc2 = new ManagementClass("Win32_PerfFormattedData_PerfOS_Memory");
ManagementObjectCollection moc2 = mc2.GetInstances();
foreach (ManagementObject mo2 in moc2)
{
double temp = Convert.ToDouble(mo2.Properties["AvailableMBytes"].Value);
available += Math.Round(temp / 1024, 1);
}
moc2.Dispose();
mc2.Dispose();
//PerformanceCounter ramCounter = new PerformanceCounter("Memory", "Available MBytes");
StringBuilder sb = new StringBuilder();
sb.AppendLine(string.Format("内存总量:{0}GB\t\t可用量:{1}GB\t\t使用量:{2}GB", capacity, available, capacity - available));
return sb.ToString();
}
/// <summary>
/// 获取本机MAC地址
/// </summary>
/// <returns>本机MAC地址</returns>
public static string GetMacAddress()
{
try
{
string strMac = string.Empty;
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if ((bool)mo["IPEnabled"])
{
strMac = mo["MacAddress"].ToString();
}
}
moc.Dispose();
mc.Dispose();
return string.Format("本机MAC地址:{0}", strMac);
}
catch
{
return "unknown";
}
}
}
c# winform cpuhelper
于 2019-04-23 20:12:47 首次发布