Получение текущего использования процессора в C++/windows для определенного процесса

Я хочу рассчитать текущее использование процессора для конкретного приложения в моем коде. Я посмотрел в Интернете и нашел библиотеку pdh для Windows. Когда я попробовал это, я получаю общее использование процессора, а не использование процессора для одного процесса.

PdhAddCounter(hquery, TEXT("\\Processor(_Total)\\% Processor Time"),0,&counter);

Так что я делаю с этой строкой, чтобы получить использование процессора для конкретного процесса? Я попытался заменить _Total на имя процесса (проводник). В то время я получаю 0 процессор. Но я проверил в мониторе ресурсов, что одновременное открытие многих окон увеличивает загрузку процессора до 20%. По-прежнему в журнале использования процессора показывает 0.

Кто-нибудь может мне с этим помочь?

заранее спасибо.

2 ответа

Решение

Вы можете проверить это, например. Объяснил все в этом проекте. Это даст память на основе идентификатора процесса (так же, как показано в диспетчере задач)

Спасибо даршан

Вам нужно использовать GetProcessTimes

И, к сожалению, он не даст вам "загрузку процессора", он даст вам количество процессорного времени с момента запуска процесса. Таким образом, чтобы получить нагрузку на процессор, вам нужно будет взять один образец, сохранить его, а затем взять другой образец через известное время, а затем рассчитать время (и если вы хотите узнать общее использование, вам нужно добавить usertime а также kerneltime вместе, конечно).

Другие вопросы по тегам