Я хочу получить процессор и использование памяти процессами, которые показаны в диспетчере задач. Я пробовал wmi, performancecounter, но ни одно из них не показывает те же значения в диспетчере задач.
РЕДАКТИРОВАТЬ: я не хочу получить общее использование процессора и памяти компьютера, на который есть ответы на другие вопросы. Я хочу получить эти значения для каждой группы приложений в диспетчере задач.
Диспетчер задач в Windows 10 группирует процессы по имени приложения. Например, в Skype есть некоторые службы, работающие в фоновом режиме, и они отображаются как сгруппированные по имени «Skype», а диспетчер задач отображает общее использование процессора и памяти этими процессами.
Снимок экрана диспетчера задач
Я попытался найти свойства процессов с помощью Process.GetProcesses (), но не смог найти какое-либо общее свойство для этих процессов.
Вкратце, как группировать процессыточно так же, как диспетчер задач в Windows 10 и вычислять значения процессора и использования памяти точно так же, как в диспетчере задач в C #?
Другими словами, как мне скопировать таблицу текущих процессов точно так же, как диспетчер задачв 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);
}
}
}