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

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.

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;

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...