CreateProcess с параметрами приоритета?

Как я могу создать и запустить процесс из моей программы с возможностью установки приоритета процесса?

Вот что у меня есть на данный момент:

const
  LOW_PRIORITY            = IDLE_PRIORITY_CLASS;
  //BELOW_NORMAL_PRIORITY = ???
  NORMAL_PRIORITY         = NORMAL_PRIORITY_CLASS;
  //ABOVE_NORMAL_PRIROTY  = ???
  HIGH_PRIORITY           = HIGH_PRIORITY_CLASS;
  REALTIME_PRIORITY       = REALTIME_PRIORITY_CLASS;

procedure RunProcess(FileName: string; Priority: Integer);
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  Done: Boolean;
begin
  FillChar(StartInfo,SizeOf(TStartupInfo),#0);
  FillChar(ProcInfo,SizeOf(TProcessInformation),#0);
  StartInfo.cb := SizeOf(TStartupInfo);
  try
    Done := CreateProcess(nil, PChar(FileName), nil, nil,False,
                          CREATE_NEW_PROCESS_GROUP + Priority,
                          nil, nil, StartInfo, ProcInfo);
    if not Done then
      MessageDlg('Could not run ' + FileName, mtError, [mbOk], 0);
  finally
    CloseHandle(ProcInfo.hProcess);
    CloseHandle(ProcInfo.hThread);
  end;
end;

Приведенный выше код работает в том смысле, что я могу установить приоритет выполняемого процесса. Но посмотрите на приведенное ниже изображение диспетчера задач Windows:

Screenshot of Task Manager

Вы можете установить больше опций, таких как "Ниже нормы" и "Выше нормы", что я и хочу иметь возможность установить. Просматривая Windows.pas, я не вижу такого значения.

Как я могу создать и запустить свой процесс с этими дополнительными параметрами?

Спасибо :)

5
задан Rob Kennedy 30 January 2012 в 16:52
поделиться