想要請問如何取得工作管理員中處理程序的每支程式的CPU%值,不是取工作管理員詳細資料中的CPU%值哦
我用C#開發,用
ManagementObjectSearcher searcher = new ManagementObjectSearcher($"root\\CIMV2", "SELECT * FROM Win32_PerfFormattedData_PerfProc_Process ");)
foreach (ManagementObject obj in searcher.Get())
{
ViewCPU = Math.Round((Convert.ToDouble($"{Convert.ToInt64(obj["PercentProcessorTime"]):n0}") / Environment.ProcessorCount), 2); //->都取到作管理員詳細資料中的CPU%值(與工作管理員中處理程序的每支程式的CPU%值落差蠻大的)
}
以上問題再請大大們幫忙
謝謝
VS2022分析CPU測量應用程式效能
https://docs.microsoft.com/zh-tw/visualstudio/profiling/beginners-guide-to-performance-profiling?view=vs-2022評估用 .NET 程式自幹。經爬文,Process.GetProcesses() 可取得系統所有執行中程序,而 C# 抓 CPU% 及記憶體用量多半是透過 .NET PerformanceCounter 類別取得(延伸閱讀:程式範例-使用 C# 查詢 CPU 與記憶體使用狀況),抓 Process 執行身分則可靠 WMI 的 GetOwner(),所有的資訊都有管道可取。
https://blog.darkthread.net/blog/get-task-manager-list-with-csharp/