Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как запустить приложение и подождать пока оно отработает 7

Delphi , Программа и Интерфейс , Приложения чужие



Автор: RhinoFC
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Запуск программы и ожидание ее завершения.

Функция запускает внешнюю программу, заданную параметром Path, и ждет ее завершения.
Во время выполнения внешней программы, текущее приложение скрывается (
т.к. не может перерисовать главное окно, что некрасиво), поэтому фактически
происходит переключение с текущей программы на внешнюю и,
после завершения внешней программы, обратно.
В качестве внешней программы может выступать любой выполняемый файл (EXE, COM, BAT, SCR).

Зависимости: Windows, Forms
Автор:       Евгений Валяев (RhinoFC), rhinofc@sniiggims.ru, ICQ:55263922, Новосибирск
Copyright:   RhinoFC
Дата:        5 июня 2002 г.
***************************************************** }

function SwitchToProg(const Path: string): Boolean;
var
  SI: TStartupInfo;
  PI: TProcessInformation;
  ExitCode: Cardinal;
begin
  FillChar(SI, SizeOf(SI), 0);
  SI.cb := SizeOf(SI);

  Result := CreateProcess(nil, PChar(Path), nil, nil, False, 0, nil, nil,
    SI, PI);

  if Result then
  begin
    Application.MainForm.Hide;
    while GetExitCodeProcess(PI.hProcess, ExitCode) and
      (ExitCode = STILL_ACTIVE) do
      ; // ждем завершения, пустой цикл
    Application.MainForm.Show;
  end;
end;

Код, предоставленный вами, - это функция Delphi, называемая SwitchToProg, которая запускает внешнюю программу, указанную параметром Path, и ожидает ее завершения. Вот подробное описание того, что код делает:

  1. Он объявляет несколько переменных:

    • SI: переменная типа TStartupInfo, которая хранит информацию о процессе, который будет запущен.
    • PI: переменная типа TProcessInformation, которая хранит информацию о процессе, созданном.
    • ExitCode: переменная типа Cardinal, которая будет хранить код завершения внешней программы.
  2. Он инициализирует переменную SI заполняя ее нулями и устанавливая ее размер равным размеру типа TStartupInfo.

  3. Он вызывает функцию CreateProcess для запуска внешней программы, указанной параметром Path. Функция возвращает булевое значение, указывающее, успешно ли был создан процесс.

  4. Если процесс был создан успешно, он скрывает основное окно текущего приложения с помощью Application.MainForm.Hide.

  5. Затем он enters бесконечный цикл, который проверяет код завершения внешнего процесса с помощью GetExitCodeProcess. Цикл продолжается, пока код завершения не будет равен 0 (то есть процесс еще не был остановлен).

  6. Когда внешняя программа будет выполнена, он снова покажет основное окно с помощью Application.MainForm.Show.

Чтобы использовать эту функцию, вы должны вызвать ее, передавая путь к внешнему исполняемому файлу как строковый параметр, например:

SwitchToProg('C:\Path\To\MyExecutable.exe');

Это запустит указанную программу и ожидает ее завершения.

Обратите внимание:

  • Код предполагает, что объект Application доступен в текущем scope. Если вы используете другую архитектуру приложений или фреймворк, вам может потребоваться изменить код соответствующим образом.
  • Функция CreateProcess используется для запуска внешней программы. Функция возвращает булевое значение, указывающее, успешно ли был создан процесс.
  • Функция GetExitCodeProcess используется для получения кода завершения внешнего процесса.
  • Цикл в коде бесконечен, что означает, что он блокирует выполнение текущего приложения до тех пор, пока внешняя программа не будет выполнена. Если вы хотите позволить другим задачам выполняться.concurrently, пока ожидается завершения внешней программы, вам может потребоваться изменить код с помощью таймера или другого механизма синхронизации.

Функция запускает внешнюю программу и ожидает ее завершения, скрывая при этом основное окно текущего приложения.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Приложения чужие ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 01:04:20/0.0052089691162109/1