Solved

Get Process List with their current CPU utilization percentage

Posted on 2010-09-02
8
920 Views
Last Modified: 2013-12-04
For a Win32 C++ console application, I need to be able to enumerate the list of processes and get a CPU utilization percentage for each process, similar to what appears in the task manager.

I can't use .NET
I can't use Delphi (for some reason so many examples are for delphi)
I can only use Win32 and C++.

How do I achieve that?
0
Comment
Question by:ronenmagid1
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 6
  • 2
8 Comments
 
LVL 33

Expert Comment

by:pgnatyuk
ID: 33589621
You can take this program from MSDN:
http://msdn.microsoft.com/en-us/library/ms682623(VS.85).asp
This is a Win32 console application.
0
 

Author Comment

by:ronenmagid1
ID: 33589658
thanks pgnatyuk, this is to enumerate processes, anything on getting their current CPU utilization % snapshot?
0
 
LVL 33

Expert Comment

by:pgnatyuk
ID: 33589716
Add GetProcessTimes to the previous example:
http://msdn.microsoft.com/en-us/library/ms683223

0
Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

 
LVL 33

Expert Comment

by:pgnatyuk
ID: 33589741
I think everything's explained in this article:
Determine CPU usage of current process (C++ and C#)
http://www.philosophicalgeek.com/2009/01/03/determine-cpu-usage-of-current-process-c-and-c/

0
 

Author Comment

by:ronenmagid1
ID: 33589791
One thing that's unclear about GetProcessTimes is the timespan. This seems like a statistical tool that can tell me,

"your application has been up for 5 weeks"
"your application used 1 week of CPU time"

Therefore I can deduce that overall, my process took 20% of the CPU during its lifetime.

however, what if I need a more "real time" monitoring? what if an app that took 1% over two weeks suddenly peaks to 99% CPU? how will I catch that in real time like TASK MANAGER does? This is really what I'm interested in, not over-time statistics but a rather "current" snapshot, based on the last x seconds.

Is there anything like that I can already use? or do I simply have to track the process for those X seconds and, monitor the elapsed time, and "sample" its CPU usage myself using deltas?

I mean, I can do this myself, but was wondering whether there's a ready made value I can pick up somewhere.
0
 
LVL 33

Accepted Solution

by:
pgnatyuk earned 500 total points
ID: 33589859
Read the article. There is the code you need. Download it. CpuUsage class has GetUsage method. Take a look.



0
 
LVL 33

Expert Comment

by:pgnatyuk
ID: 33589912
Another approach (performance counters):
http://www.codeproject.com/KB/system/cpuusageByDudiAvramov.aspx
0
 
LVL 33

Expert Comment

by:pgnatyuk
ID: 33590084
Windows SysInternals. Process Explorer v12.04
http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
0

Featured Post

Enroll in July's Course of the Month

July's Course of the Month is now available! Enroll to learn HTML5 and prepare for certification. It's free for Premium Members, Team Accounts, and Qualified Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this article, I will show how to use the Ribbon IDs Tool Window to assign the built-in Office icons to a ribbon button.  This tool will help us to find the OfficeImageId that corresponds to our desired built-in Office icon. The tool is part of…
This article surveys and compares options for encoding and decoding base64 data.  It includes source code in C++ as well as examples of how to use standard Windows API functions for these tasks. We'll look at the algorithms — how encoding and decodi…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
NetCrunch network monitor is a highly extensive platform for network monitoring and alert generation. In this video you'll see a live demo of NetCrunch with most notable features explained in a walk-through manner. You'll also get to know the philos…

628 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question