ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Get CPU Priority of a ProcessID (https://www.excelbanter.com/excel-programming/444882-get-cpu-priority-processid.html)

Poniente

Get CPU Priority of a ProcessID
 
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

Michel Pierron

Get CPU Priority of a ProcessID
 
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



"Poniente" a écrit dans le message de
...
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



Poniente

Get CPU Priority of a ProcessID
 
Thanks again Michel (and sorry for the late reply).


On 23 aug, 13:14, "Michel Pierron" wrote:
HiPoniente;
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

"Poniente" a écrit dans le message ...







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




All times are GMT +1. The time now is 05:13 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com