vc 在windows 获得cpu使用率
时间: 2023-10-27 08:03:20 浏览: 50
在Windows中,获取CPU使用率可以使用PerformanceCounter类和ManagementObject类来实现。
首先,可以使用PerformanceCounter类从计算机性能计数器中获取CPU使用率。通过实例化PerformanceCounter类并指定相关的性能计数器类别和计数器名称,可以获取到CPU使用率。代码示例如下:
```csharp
PerformanceCounter cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
float cpuUsage = cpuCounter.NextValue() / Environment.ProcessorCount;
System.Threading.Thread.Sleep(1000); // 等待1秒
cpuUsage = cpuCounter.NextValue() / Environment.ProcessorCount;
Console.WriteLine("CPU使用率: " + cpuUsage.ToString("0.00") + "%");
```
以上代码实例化了PerformanceCounter类,并指定了Processor类别的"% Processor Time"计数器。通过调用NextValue()方法获取计数器的下一个值,然后除以ProcessorCount得到CPU使用率。为了获取到实时的CPU使用率,sleep方法会等待1秒钟再次获取值。最后将获取到的值输出。
另外一种方式是使用ManagementObject类从Windows Management Instrumentation (WMI) 中获取CPU使用率。通过使用WQL (Windows Management Query Language) 查询语句来获取相关信息,代码示例如下:
```csharp
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PerfFormattedData_PerfOS_Processor");
ManagementObjectCollection collection = searcher.Get();
foreach (ManagementObject obj in collection)
{
if (obj["Name"].ToString() == "_Total")
{
float cpuUsage = 100 - float.Parse(obj["PercentIdleTime"].ToString());
Console.WriteLine("CPU使用率: " + cpuUsage.ToString("0.00") + "%");
break;
}
}
```
以上代码使用ManagementObjectSearcher类指定WQL查询语句,通过Get()方法获取到相关的性能数据。然后遍历获取到的集合,找到Name为"_Total"的对象,通过PercentIdleTime属性计算CPU使用率。
无论是使用PerformanceCounter类还是ManagementObject类,都能够获取到Windows中的CPU使用率。具体使用哪种方式可以根据需要来选择。