我想获取任务管理器中显示的进程的 CPU 和内存使用情况。我尝试了 wmi,performancecounter,但它们都没有在任务管理器上显示相同的值。
编辑:我不想得到在其他问题上回答的 pc 的总 cpu 和内存使用情况。我想在任务管理器中为每个应用程序组获取这些值。
Windows 10 上的任务管理器按其应用程序名称对进程进行分组。例如,Skype 有一些在后台运行的服务,它们显示为按“Skype”名称分组,任务管理器显示这些进程的总 cpu 和内存使用情况。
我尝试使用 Process.GetProcesses() 搜索进程的属性,但我找不到这些进程的任何公共属性。
简而言之,我如何像 Windows 10 上的任务管理器一样对进程进行分组,并在 C# 中的任务管理器上计算相同的 CPU 和内存使用值?
换句话说,如何复制与 Windows 10 上的任务管理器相同的当前进程表?
public class CPU_Memory_Calculator
{
private double _percentCPU = 0, _memoryMB = 0;
public double GetPercentCPU { get { return _percentCPU; } }
public double GetMemoryMB { get { return _memoryMB; } }
public CPU_Memory_Calculator(string processName)
{
Process[] processArray = Process.GetProcesses().Where(x => x.ProcessName.ToLower().Contains(processName.ToLower())).ToArray();
if (processArray.Length >= 0)
{
double totalMemory = 0;
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_PerfFormattedData_PerfProc_Process WHERE Name LIKE '%" + processName + "%'"))
{
foreach (ManagementObject obj in searcher.Get())
{
double memory = Convert.ToDouble(obj["WorkingSet"]) / 1024.0 / 1024.0;
totalMemory += memory;
}
}
_memoryMB = Math.Round(totalMemory, 2);
}
}
}