Get CPU Priority of a ProcessID

  • Thread starter Thread starter Poniente
  • Start date Start date
P

Poniente

I'd like to read the current CPU priority as found in the task
managers' processes tab, when right-clicking on a process, and
selecting 'set priority'.

I've tried using
Private Declare Function GetPriorityClass Lib "kernel32" (ByVal
hProcess As Long) As Long

and using

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("Select * from
Win32_Process")

For Each objProcess In colProcesses
r = r + 1
POutput(r, 1) = objProcess.ProcessID
POutput(r, 2) = objProcess.Name
POutput(r, 3) = objProcess.Priority
POutput(r, 4) = objProcess.Handle
POutput(r, 5) = GetPriorityClass(POutput(r, 4))
Next

but, but this GetPriorityClass function always returns a zero, even
though I can see some priorities are 'AboveNormal'. So this is where
I'm stuck..

Your help is appreciated.
Poniente
 
Hi Poniente;
You dont need the "GetPriorityClass" API function", you can translate the
process priority value by using a function like :

.....
POutput(r, 3) = PriorityClass(objProcess.Priority)
.....

' Base priority of a process is a numeric value from
' zero (lowest priority) to 31 (highest priority).
Private Function PriorityClass(ByVal Priority&) As String
PriorityClass = "Unknown"
Select Case Priority
Case 4: PriorityClass = "Low"
Case 8: PriorityClass = "Normal"
Case 13: PriorityClass = "High"
Case 24: PriorityClass = "RealTime"
End Select
End Function

Regards;
MP
 
Back
Top