Показать сообщение отдельно
  #3  
Старый 10.12.2008, 18:24
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

В принципе неверно. Тебе нужна функция CreateProcess, которая вернет тебе хэндл процесса и пока этот процесс работает тебе надо ждать.

Вот кусок кода из проекта, запускающего консольное приложение и ждущего, пока оно отработает:
Код:
            // call pcpos
            FName := FWorkPlaceOptions.PCPOSFilePath + 'out.pos';
            DeleteFile(FName);
            si.lpReserved := nil;
            si.lpDesktop := nil;
            si.lpTitle := nil;
            si.dwFlags := STARTF_USESHOWWINDOW;
            si.wShowWindow := SW_SHOWNORMAL;
            si.lpReserved2 := nil;
            si.cbReserved2 := 0;
            si.cb := SizeOf(si);

            if CreateProcess(PChar(FWorkPlaceOptions.PCPOSPath),
              nil,
              nil,
              nil,
              BOOL(FALSE),
              CREATE_DEFAULT_ERROR_MODE or NORMAL_PRIORITY_CLASS or CREATE_NEW_CONSOLE,
              nil,
              PChar(ExtractfilePath(FWorkPlaceOptions.PCPOSPath)),
              si,
              pi) = BOOL(FALSE) then
              raise Exception.Create(PCPOSRunFault);
            WaitForSingleObject(pi.hProcess, INFINITE);
            CloseHandle(pi.hProcess);

            Application.ProcessMessages;
Ответить с цитированием