Как получить / установить приоритет процесса?
Материал из DRKB
Как получить / установить приоритет процесса?[править | править код]
const
ppIdle : Integer = -1;
ppNormal : Integer = 0;
ppHigh : Integer = 1;
ppRealTime : Integer = 2;
function SetProcessPriority(Priority: Integer): Integer;
var
H: THandle;
begin
Result := ppNormal;
H := GetCurrentProcess();
if (Priority = ppIdle) then
SetPriorityClass(H, IDLE_PRIORITY_CLASS)
else if (Priority = ppNormal) then
SetPriorityClass(H, NORMAL_PRIORITY_CLASS)
else if (Priority = ppHigh) then
SetPriorityClass(H, HIGH_PRIORITY_CLASS)
else if (Priority = ppRealTime) then
SetPriorityClass(H, REALTIME_PRIORITY_CLASS);
case GetPriorityClass(H) of
IDLE_PRIORITY_CLASS : Result := ppIdle;
NORMAL_PRIORITY_CLASS : Result := ppNormal;
HIGH_PRIORITY_CLASS : Result := ppHigh;
REALTIME_PRIORITY_CLASS : Result := ppRealTime;
End;
end;
function GetProcessPriority: Integer;
var
H: THandle;
begin
Result := ppNormal;
H := GetCurrentProcess();
case GetPriorityClass(H) of
IDLE_PRIORITY_CLASS : Result := ppIdle;
NORMAL_PRIORITY_CLASS : Result := ppNormal;
HIGH_PRIORITY_CLASS : Result := ppHigh;
REALTIME_PRIORITY_CLASS : Result := ppRealTime;
end;
end;
Как использовать:
function SetProcessPriority(Priority: Integer): Integer;
для установки приоритета Вашего приложения, либо:
function GetProcessPriority: Integer;
для получения приоритета.
Source: Взято из http://forum.sources.ru
ID: 02042
Следующий пример изменяет приоритет приложения. Изменение приоритета следует использовать с осторожностью - т.к. присвоение слишком высокого приоритета может привести к медленной работе остальных программ и системы в целом. См. Win32 help for SetThreadPriority() function.
procedure TForm1.Button1Click(Sender: TObject);
var
ProcessID: DWORD;
ProcessHandle: THandle;
ThreadHandle: THandle;
begin
ProcessID := GetCurrentProcessID;
ProcessHandle := OpenProcess(PROCESS_SET_INFORMATION,
False,
ProcessID);
SetPriorityClass(ProcessHandle, REALTIME_PRIORITY_CLASS);
ThreadHandle := GetCurrentThread;
SetThreadPriority(ThreadHandle, THREAD_PRIORITY_TIME_CRITICAL);
end;
ID: 02043