ВУЗ:
Составители:
Рубрика:
- 70 -
memset(&si, 0, sizeof(STARTUPINFO)); // обнулить структуру si
si.cb=sizeof(STARTUPINFO); // заполним поле cb структуры si
switch (Priority) // настройка приоритета процесса-потомка
{
case 0: dwCreationFlag=REALTIME_PRIORITY_CLASS;
break;
case 1: dwCreationFlag=HIGH_PRIORITY_CLASS;
break;
case 2: dwCreationFlag=NORMAL_PRIORITY_CLASS;
break;
default:
dwCreationFlag=IDLE_PRIORITY_CLASS;
}
out=CreateProcess(NULL,CommandLine,NULL,NULL,false,
dwCreationFlag,NULL,NULL,&si,&pi);
if (!out) // если старт неудачен... out=false
{
if (RuleMessage) // если задан режим выдачи сообщений об ошибках
MessageDlg("Извините, выполнение\n\r\n\r" +
UpperCase(CommandLine) +
"\n\r\n\rневозможно... (ошибка " +
IntToStr(GetLastError()) + ")",
mtError, TMsgDlgButtons() << mbYes, 0);
return;
} // конец IF out = false
if (out) // если старт удачен... out=true
{
if (RuleParent == 0) // если родитель должен ждать
// окончания работы потомка
{
CloseHandle(pi.hThread); // хэндл потока
уже не нужен - удаляем
// начинаем бесконечный цикл ожидания...
if (WaitForSingleObject(pi.hProcess, INFINITE) != WAIT_FAILED)
{
GetExitCodeProcess(pi.hProcess, &dwExitCode); // если
// ошибка функции ожидания...
if (RuleMessage) // если задан режим выдачи сообщений об ошибках
if (dwExitCode != WAIT_OBJECT_0) // WAIT_OBJECT_0 = естественное
// завершение процесса
MessageDlg("Извините, процесс\n\r\n\r" +
UpperCase(CommandLine) +
"\n\r\n\rзакончен с ошибкой " +
IntToStr(dwExitCode) + "\n\r",
mtError, TMsgDlgButtons() << mbOK, 0);
- 70 -
memset(&si, 0, sizeof(STARTUPINFO)); // обнулить структуру si
si.cb=sizeof(STARTUPINFO); // заполним поле cb структуры si
switch (Priority) // настройка приоритета процесса-потомка
{
case 0: dwCreationFlag=REALTIME_PRIORITY_CLASS;
break;
case 1: dwCreationFlag=HIGH_PRIORITY_CLASS;
break;
case 2: dwCreationFlag=NORMAL_PRIORITY_CLASS;
break;
default:
dwCreationFlag=IDLE_PRIORITY_CLASS;
}
out=CreateProcess(NULL,CommandLine,NULL,NULL,false,
dwCreationFlag,NULL,NULL,&si,&pi);
if (!out) // если старт неудачен... out=false
{
if (RuleMessage) // если задан режим выдачи сообщений об ошибках
MessageDlg("Извините, выполнение\n\r\n\r" +
UpperCase(CommandLine) +
"\n\r\n\rневозможно... (ошибка " +
IntToStr(GetLastError()) + ")",
mtError, TMsgDlgButtons() << mbYes, 0);
return;
} // конец IF out = false
if (out) // если старт удачен... out=true
{
if (RuleParent == 0) // если родитель должен ждать
// окончания работы потомка
{
CloseHandle(pi.hThread); // хэндл потока уже не нужен - удаляем
// начинаем бесконечный цикл ожидания...
if (WaitForSingleObject(pi.hProcess, INFINITE) != WAIT_FAILED)
{
GetExitCodeProcess(pi.hProcess, &dwExitCode); // если
// ошибка функции ожидания...
if (RuleMessage) // если задан режим выдачи сообщений об ошибках
if (dwExitCode != WAIT_OBJECT_0) // WAIT_OBJECT_0 = естественное
// завершение процесса
MessageDlg("Извините, процесс\n\r\n\r" +
UpperCase(CommandLine) +
"\n\r\n\rзакончен с ошибкой " +
IntToStr(dwExitCode) + "\n\r",
mtError, TMsgDlgButtons() << mbOK, 0);
Страницы
- « первая
- ‹ предыдущая
- …
- 68
- 69
- 70
- 71
- 72
- …
- следующая ›
- последняя »
