Getting current cpu usage in c++/windows for particular process

7.6k views Asked by At

I want to calculate current cpu usage for particular application in my code. I looked up on internet and found pdh library for windows. When I tried it I am getting overall cpu usage not cpu usage for one process.

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

So what I do with this line to get cpu usage for particular process? I tried replacing _Total with process name(explorer). At that time I am getting 0 cpu usage. But I checked in resource monitor that opening many windows at a time increased cpu usage upto 20%. Still in log file cpu usage is showing 0.

Can anyone help me with this?

thanks in advance.

2

There are 2 answers

4
Darshan On BEST ANSWER

You can check this for example. Explained everything in that project. It will give memory based on process id(same way shown in task manager)

Thanks, Darshan

4
Mats Petersson On

You need to use GetProcessTimes

And unfortunately, it won't give you the "CPU usage", it will give you the amount of CPU-time since the process started. So to get CPU usage, you will need to take one sample, store that, and then take another sample a known amount of time later, and then calculate the time (and if you want to know the total usage, you'll need to add the usertime and kerneltime together, of course).