Delphi: Флаги создания процесса в функции CreateProcess - PullRequest
0 голосов
/ 28 июля 2011

Существует 4 флага, которые обычно описываются в статьях / примерах:

 NORMAL_PRIORITY_CLASS           = $00000020;
  {$EXTERNALSYM NORMAL_PRIORITY_CLASS}
  IDLE_PRIORITY_CLASS             = $00000040;
  {$EXTERNALSYM IDLE_PRIORITY_CLASS}
  HIGH_PRIORITY_CLASS             = $00000080;
  {$EXTERNALSYM HIGH_PRIORITY_CLASS}
  REALTIME_PRIORITY_CLASS         = $00000100;
  {$EXTERNALSYM REALTIME_PRIORITY_CLASS}

Могу ли я использовать любой из них: http://msdn.microsoft.com/en-us/library/ms684863(v=VS.85).aspx / http://msdn.microsoft.com/en-us/library/ms683211(v=VS.85).aspx в этой функции?

В чем разница между этими двумя ссылками?

Почему я получаю ошибку в функции CreateProcess: несовместимые типы: 'Cardinal' и 'TThreadPriority', если у меня есть и делают:

var Priority : Cardinal
Priority:=NORMAL_PRIORITY_CLASS;
CreateProcess(PChar(Path), Pchar(Par), nil, nil, false,
Priority, nil, nil, StartUpInfo, ProcessInfo);

Что за TThreadPriority ....

Спасибо!

1 Ответ

4 голосов
/ 28 июля 2011

Вы можете использовать один из 6 флагов, которые упоминаются в документации функции GetPriorityClass. Причина, по которой RTL опускает 2 флага, заключается в том, что они не поддерживаются в Windows 9x / ME (это в D2007, возможно, более поздние версии имеют эти флаги).

Вы можете or флаг класса приоритета с любой комбинацией флагов создания процесса (кроме случаев, отмеченных в документации - первая предоставленная вами ссылка).


TThreadPriority - это перечислимый тип, используемый в TThread в 'classes.pas' и никак не связан с флагами создания процесса. Код, размещенный в вопросе, похоже, не имеет никаких проблем (см. Комментарии к вопросу).

...