0

我想获取任务管理器中显示的进程的 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);
                }

            }
        }
4

0 回答 0