1

Тема: AHK: Команда Process - узнать приоритет процесса по PID

Приветствую.

И так сабж.
Мне нужно узнать, а не поменять приоритет процесса по PID.

Команды Process и WinGet не выдают такой информации. Поиском пользовался.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

2

Re: AHK: Команда Process - узнать приоритет процесса по PID

https://msdn.microsoft.com/ru-ru/librar … s.85).aspx

3 (изменено: serzh82saratov, 2017-04-26 00:02:44)

Re: AHK: Команда Process - узнать приоритет процесса по PID

Примерчиком не поделишься?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4 (изменено: Malcev, 2017-04-26 00:23:40)

Re: AHK: Команда Process - узнать приоритет процесса по PID

PROCESS_QUERY_INFORMATION := 0x400
PID := 360
hProc := DllCall("OpenProcess", "Uint", PROCESS_QUERY_INFORMATION, "Int", 0, "UInt", PID, "Ptr")
Priority := DllCall("GetPriorityClass", "Ptr", hProc)
DllCall("CloseHandle", "Ptr", hProc)
msgbox % Priority

Но если требуется процессы других пользователей открывать, то надо сперва повысить привилегии скрипта:

Process, Exist  ; sets ErrorLevel to the PID of this running script
; Get the handle of this script with PROCESS_QUERY_INFORMATION (0x0400)
h := DllCall("OpenProcess", "UInt", 0x0400, "Int", false, "UInt", ErrorLevel, "Ptr")
; Open an adjustable access token with this process (TOKEN_ADJUST_PRIVILEGES = 32)
DllCall("Advapi32.dll\OpenProcessToken", "Ptr", h, "UInt", 32, "PtrP", t)
VarSetCapacity(ti, 16, 0)  ; structure of privileges
NumPut(1, ti, 0, "UInt")  ; one entry in the privileges array...
; Retrieves the locally unique identifier of the debug privilege:
DllCall("Advapi32.dll\LookupPrivilegeValue", "Ptr", 0, "Str", "SeDebugPrivilege", "Int64P", luid)
NumPut(luid, ti, 4, "Int64")
NumPut(2, ti, 12, "UInt")  ; enable this privilege: SE_PRIVILEGE_ENABLED = 2
; Update the privileges of this process with the new access token:
r := DllCall("Advapi32.dll\AdjustTokenPrivileges", "Ptr", t, "Int", false, "Ptr", &ti, "UInt", 0, "Ptr", 0, "Ptr", 0)
DllCall("CloseHandle", "Ptr", t)  ; close this access token handle to save memory
DllCall("CloseHandle", "Ptr", h)  ; close this process handle to save memory

5

Re: AHK: Команда Process - узнать приоритет процесса по PID

Коды возврата, словами не трудно расписать?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

6

Re: AHK: Команда Process - узнать приоритет процесса по PID

;0x100 - realtime
;0x80 - high
;0x8000 - above normal
;0x20 - normal
;0x4000 - below normal
;0x40 - low

7

Re: AHK: Команда Process - узнать приоритет процесса по PID

Malcev
А если процесса не существует/ ошибочный PID, ну всякое бывает, то какой код возврата в коде.

PROCESS_QUERY_INFORMATION := 0x400
PID := 360
hProc := DllCall("OpenProcess", "Uint", PROCESS_QUERY_INFORMATION, "Int", 0, "UInt", PID, "Ptr")
Priority := DllCall("GetPriorityClass", "Ptr", hProc)
DllCall("CloseHandle", "Ptr", hProc)
msgbox % Priority

Я про гарантированный код возврата, т.е. всегда False, т.е. 0x0?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

8

Re: AHK: Команда Process - узнать приоритет процесса по PID

Проверяйте наличие процесса перед OpenProcess.
Либо проверяйте A_LastError после OpenProcess.
Если обращение к GetPriorityClass возвращает 0, значит что-то пошло не так и надо смотреть A_LastError.

9 (изменено: Flasher, 2017-04-26 08:38:20)

Re: AHK: Команда Process - узнать приоритет процесса по PID

Malcev
1. Понятно, так и делаю.
2. Тоже понятно, просто забыл что DllCall пишет в A_LastError.
3. Это тоже понятно.

Спасибо за развёрнутый ответ.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

10

Re: AHK: Команда Process - узнать приоритет процесса по PID

Indomito
Замечание за избыточное цитирование. Убрано.