Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как получить / установить приоритет процесса?

01.01.2007
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;

для получения приоритета.

Взято из https://forum.sources.ru


Следующий пример изменяет приоритет приложения. Изменение приоритета следует использовать с осторожностью - т.к. присвоение слишком высокого приоритета может привети к медленной работе остальных программ и системы в целом. См. 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;