Разработка прикладных программ для ОС WINDOWS с помощью интегрированных сред Delphi / C++Builder. Баканов В.М. - 68 стр.

UptoLike

Составители: 

- 68 -
CommandLine
при RuleParent=0 процесс-родитель ждет окончания работы потомка, при
этом позволяя работать другим WINDOWS-приложениям (т.е. 'спит')
при RuleParent=1 процесс-родитель продолжает работать вместе с потом-
ком
при всех других значениях RuleParent процесс-родитель после запуска
процесса-потомка завершается
Priority=0/1/2/3 соответствует приоритетам запускаемого приложения
REALTIME / HIGH / NORMAL / IDLE соответственно (все другие значения
Priority соответствуют IDLE)
при RuleMessage=TRUE выдается сообщение об ошибках }
const
CRLF = #13#10;
var
si: STARTUPINFO; { структура определения внешнего вида
окна процесса-потомка }
pi: PROCESS_INFORMATION; { структура хранения идентификаторов
и системных номеров созданного процесса и
его главной задачи }
zString: array[0..255] of Char;
dwCreationFlag,dwExitCode: DWORD;
out: boolean;
begin
FillChar(si, sizeof(si), 0); { обнулить структуру si }
si.cb:=sizeof(STARTUPINFO); { заполним поле cb структуры si }
case Priority of { настройка приоритета процесса-потомка }
0: dwCreationFlag:=REALTIME_PRIORITY_CLASS;
1: dwCreationFlag:=HIGH_PRIORITY_CLASS;
2: dwCreationFlag:=NORMAL_PRIORITY_CLASS;
else
dwCreationFlag:=IDLE_PRIORITY_CLASS;
end;
out:=CreateProcess(NIL,StrPCopy(zString,CommandLine),NIL,NIL,false,
dwCreationFlag,NIL,NIL,si,pi);
if out = false then { если старт неудачен... out=false }
begin
if RuleMessage then { задан режим выдачи сообщений об ошибках }
MessageDlg('Извините, выполнение' + CRLF + CRLF +
UpperCase(CommandLine) + CRLF + CRLF +
'невозможно... (ошибка '+IntToStr(GetLastError()) + ')',
mtError,
[mbOk], 0);
exit;
end; { конец IF out = false }
                                         - 68 -


CommandLine
  при RuleParent=0 процесс-родитель ждет окончания работы потомка, при
      этом позволяя работать другим WINDOWS-приложениям (т.е. 'спит')
  при RuleParent=1 процесс-родитель продолжает работать вместе с потом-
      ком
  при всех других значениях RuleParent процесс-родитель после запуска
      процесса-потомка завершается
  Priority=0/1/2/3 соответствует приоритетам запускаемого приложения
      REALTIME / HIGH / NORMAL / IDLE соответственно (все другие значения
      Priority соответствуют IDLE)
  при RuleMessage=TRUE выдается сообщение об ошибках }
const
 CRLF = #13#10;
var
 si: STARTUPINFO; { структура определения внешнего вида
                        окна процесса-потомка }
 pi: PROCESS_INFORMATION; { структура хранения идентификаторов
                                  и системных номеров созданного процесса и
                                  его главной задачи }
 zString: array[0..255] of Char;
 dwCreationFlag,dwExitCode: DWORD;
 out: boolean;
begin

 FillChar(si, sizeof(si), 0); { обнулить структуру si }
 si.cb:=sizeof(STARTUPINFO); { заполним поле cb структуры si }

 case Priority of { настройка приоритета процесса-потомка }
   0: dwCreationFlag:=REALTIME_PRIORITY_CLASS;
   1: dwCreationFlag:=HIGH_PRIORITY_CLASS;
   2: dwCreationFlag:=NORMAL_PRIORITY_CLASS;
   else
     dwCreationFlag:=IDLE_PRIORITY_CLASS;
 end;

 out:=CreateProcess(NIL,StrPCopy(zString,CommandLine),NIL,NIL,false,
                    dwCreationFlag,NIL,NIL,si,pi);

 if out = false then { если старт неудачен... out=false }
 begin
   if RuleMessage then { задан режим выдачи сообщений об ошибках }
     MessageDlg('Извините, выполнение' + CRLF + CRLF +
                   UpperCase(CommandLine) + CRLF + CRLF +
                   'невозможно... (ошибка '+IntToStr(GetLastError()) + ')',
                   mtError,
                   [mbOk], 0);
     exit;
   end; { конец IF out = false }