2012-03-19 8 views
6

WMIを使用してCPU使用率を返すには、Win32_PerfFormattedData_PerfOS_ProcessorからPercentProcessorTimeを返しますか?そうでなければ、どのクラスを見てみるべきですか?ありがとう。C#を使用したWMIでのCPU使用率の復帰

+0

[この質問はこちら](http://stackoverflow.com/questions/278071/how-to-get-the-cpu-usage-in-c)をご覧ください。それはあなたの質問に答える必要があります – Icemanind

+0

はい[Win32_PerfFormattedData_PerfOS_Processor](http://msdn.microsoft.com/en-us/library/windows/desktop/aa394271%28v=vs.85%29.aspx)WMIクラスは、 CPU使用率を取得します。 – RRUZ

答えて

13
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PerfFormattedData_PerfOS_Processor"); 
foreach (ManagementObject obj in searcher.Get()) 
{ 
    var usage = obj["PercentProcessorTime"]; 
    var name = obj["Name"]; 
    Console.WriteLine(name +" : " + usage); 
} 

そして、LINQの愛好家のための

ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_PerfFormattedData_PerfOS_Processor"); 
var cpuTimes = searcher.Get() 
    .Cast<ManagementObject>() 
    .Select(mo => new 
     { 
      Name = mo["Name"], 
      Usage = mo["PercentProcessorTime"] 
     } 
    ) 
    .ToArray(); 
+0

ありがとう、それは私が鉱山をどのように設定するかです。 – jpavlov

+1

次のようにすることもできます。新しいManagementObjectSearcher( "SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor WHERE Name = '_Total'"))Get();キャスト()。 。プロパティ["PercentProcessorTime"] .Value.ToString() – Sevin7

1

情報はここでWMIにも利用可能であるように思える:

"select LoadPercentage from Win32_Processor"

"各プロセッサの負荷容量は、平均で1秒前です。プロセッサ負荷は一度に各プロセッサのための総計算負荷を指し、 "

OR:

"select LoadPercentage from CIM_Processor"

" は、プロセッサの負荷、にわたって平均しました最後の分をパーセンテージで表します。」

OR:

"select PercentProcessorTime from Win32_PerfFormattedData_PerfOS_Processor"も同様です。


注:これらは多くの場合、CPUコアごとに複数の結果を返すと、システム全体の総CPU使用率を取得するために合計する必要があるので、そのために見えます。

この質問と回答は、C#でWMIから情報を取得することは実際には異なる質問であり、C#でのWMIクエリと非常に似ているはずです。