Мне необходимо получить данные системы как в мониторинге ресурсов Windows. А именно работу каждого процесса с файлами и статистику. Данные из верхней таблице нашел через GetPidIoCounters и структуру IO_COUNTERS а вот данные из нижней сетки не получается.
1) Через WMI, класс Win32_Process, как с ним работать написано тут и тут
2) Через PerformanceCounter
void Main()
{
Process p = Process.GetProcesses()[0];
PerformanceCounter ramCounter = new PerformanceCounter("Process", "Working Set", p.ProcessName);
PerformanceCounter cpuCounter = new PerformanceCounter("Process", "% Processor Time", p.ProcessName);
PerformanceCounter privateCounter = new PerformanceCounter("Process", "Private Bytes", p.ProcessName);
while (true)
{
Thread.Sleep(1000);
double ram = ramCounter.NextValue();
double cpu = cpuCounter.NextValue();
double privateBytes = privateCounter.NextValue();
Console.WriteLine("RAM: "+(ram/1024/1024)+" MB; CPU: "+(cpu)+" %; " + privateBytes/1024/1024 + " MB");
}
}
Вам нужен класс PerfomanceCounter:
Примерно так будет:
foreach(var process in Process.GetProcesses())
{
PerformanceCounter pcRead = new PerformanceCounter("Process", "IO Write Bytes/sec", process.ProcessName);
PerformanceCounter pcWrite = new PerformanceCounter("Process", "IO Read Bytes/sec", process.ProcessName);
Console.WriteLine($"Read: {pcRead.NextValue()} + %");
Console.WriteLine($"Write: {pcWrite.NextValue()} + %");
}
Пример описание использования
Список категорий для процессов
Продвижение своими сайтами как стратегия роста и независимости