Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , Программа и Интерфейс , Процессы и Сервисы

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;

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

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

Пример

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

Код, написанный на Delphi, предлагает два функционала для установки и получения приоритета процесса. Вот подробное описание работы кода:

Функции:

  1. SetProcessPriority(Priority: Integer): Integer - Функция устанавливает приоритет текущего процесса в один из четырех предопределенных уровней:
    • ppIdle (IDLE_PRIORITY_CLASS)
    • ppNormal (NORMAL_PRIORITY_CLASS)
    • ppHigh (HIGH_PRIORITY_CLASS)
    • ppRealTime (REALTIME_PRIORITY_CLASS)

Функция возвращает оригинальный класс приоритета процесса.

  1. GetProcessPriority: Integer - Функция получает текущий приоритет процесса и возвращает один из тех же четырех предопределенных уровней, что и выше.

Использование:

Чтобы установить приоритет процесса, вызовите функцию SetProcessPriority(Priority) с целочисленным значением, представляющим желаемый уровень приоритета (например, ppRealTime для реального времени).

Чтобы получить приоритет процесса, просто вызовите функцию GetProcessPriority().

Пример:

Проведенный пример демонстрирует использование этих функций в приложении Delphi. Обработчик события Button1Click: * Получает идентификатор текущего процесса с помощью GetCurrentProcessID. * Открывает handle процесса с помощью OpenProcess. * Устанавливает класс приоритета процесса с помощью SetPriorityClass. * Получает handle потока с помощью GetCurrentThread. * Устанавливает приоритет потока с помощью SetThreadPriority.

Примечание: Как указано в комментарии к коду, установка высокого или реального времени приоритета для вашего приложения может иметь неожиданные последствия, такие как замедление других программ и системы. Будьте осторожны при использовании этих функций.

В целом, этот код предлагает простой способ управления приоритетами процессов в приложениях Delphi.

В статье описывается как использовать функции SetProcessPriority и GetProcessPriority для установки и получения приоритета процесса в программе на языке Delphi.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Процессы и Сервисы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:14:04/0.0056850910186768/1