Содержание материала

Следующий пример изменяет приоритет приложения. Изменение приоритета следует использовать с осторожностью - т.к. присвоение слишком высокого приоритета может привети к медленной работе остальных программ и системы в целом. См. Win32 help for SetThreadPriority() function.

 

Code:

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;

 


 

Code:

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;

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

 

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить