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;
Следующий пример изменяет приоритет приложения. Изменение приоритета следует использовать с осторожностью - т.к. присвоение слишком высокого приоритета может привети к медленной работе остальных программ и системы в целом. См. Win32 help for SetThreadPriority() function.
Код, написанный на Delphi, предлагает два функционала для установки и получения приоритета процесса. Вот подробное описание работы кода:
Функции:
SetProcessPriority(Priority: Integer): Integer - Функция устанавливает приоритет текущего процесса в один из четырех предопределенных уровней:
ppIdle (IDLE_PRIORITY_CLASS)
ppNormal (NORMAL_PRIORITY_CLASS)
ppHigh (HIGH_PRIORITY_CLASS)
ppRealTime (REALTIME_PRIORITY_CLASS)
Функция возвращает оригинальный класс приоритета процесса.
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
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.