GET进程CPU使用情况c

时间:2012-06-20 11:34:31

标签: c windows

如何在c ??

中获取进程CPU使用率

我需要使用evrey进程和线程的cpu。

请举个例子。

谢谢!

2 个答案:

答案 0 :(得分:3)

在C中,可以使用Performance Counters确定总CPU使用率(示例代码中存在一个小错误:sleep必须更改为Sleep })。

在C ++,C#,Delphi等中,我建议使用WMI

==编辑==

我找到了一种方法来获得每个进程的CPU使用率。例如,为了获得Microsoft Outlook的CPU负载,请将上例中的计数器路径更改为:

PdhAddCounter(query, TEXT("\\Process(OUTLOOK)\\% Processor Time"), 0, &counter);

如果您运行了同一个可执行文件的多个实例,则可以使用indexesThis MSDN example也很有用。

答案 1 :(得分:2)

在普通C中,这是不可能的,但由于问题也标记为“Windows”:

CPU使用率是CPU时间除以实时。 GetThreadTimesGetProcessTimes函数为您提供了这些信息(以及Joachim Pileborg上面提到的性能计数器等其他功能,但我认为这可能更容易)。

您可能还希望首先使用CreateToolhelp32Snapshot来了解存在哪些进程和线程。您需要将线程/进程ID转换为句柄,但我想这不会是一个很大的障碍(即OpenProcess)。