Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

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

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

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

Объявляем сначала две глобальные переменные:


var
  si: Tstartupinfo;
  p: Tprocessinformation;

Затем по нужному событию, например, по нажатию на кнопке пишет такой код:


FillChar( Si, SizeOf( Si ) , 0 );
with Si do
begin
  cb := SizeOf( Si);
  dwFlags := startf_UseShowWindow;
  wShowWindow := 4;
end;

Form1.WindowState:=wsminimized;
Createprocess(nil, 'c:\windows\sndrec32.exe e:\temp.wav', nil, nil,
false, Create_default_error_mode, nil, nil, si, p);
Waitforsingleobject(p.hProcess, infinite);
Form1.WindowState:=wsNormal;

Here's the translation of the text into Russian:

Интересный фрагмент кода на Delphi!

Этот код предназначен для запуска процесса (c:\windows\sndrec32.exe) и ожидания его завершения выполнения. Вот разбивка на секции:

Инициализация Две глобальные переменные объявлены: si (типа Tstartupinfo) и p (типа Tprocessinformation).

Обработка событий Код запускается по какому-то событию, вероятно, нажатию кнопки, которое выполняет следующий код:

FillChar( Si, SizeOf( Si )), 0 );  // Инициализация si в ноль
with Si do
begin
  cb  := SizeOf( Si );  // Установка размера структуры запуска
  dwFlags  := startf_UseShowWindow;  // Использование default window show state
  wShowWindow  := 4;  // Показать процесс в минимальном состоянии (WS_MINIMIZED)
end;

Этот код инициализирует переменную si и настраивает ее свойства:

  • cb: Размер структуры запуска.
  • dwFlags: Флаги для создания процесса. В этом случае они установлены в startf_UseShowWindow, что означает, что процесс будет использовать default window show state.
  • wShowWindow: Желаемое состояние окна для процесса. В этом случае оно установлено в 4, что эквивалентно WS_MINIMIZED.

Запуск процесса Затем код создает новый процесс с помощью функции CreateProcess:

Form1.WindowState:=wsMinimized;  // Установка состояния окна Form1 в минимальном состоянии
CreateProcess(nil, 'c:\windows\sndrec32.exe e:\temp.wav', nil, nil,
  false, CreateDefaultErrorMode, nil, nil, si, p);

Этот код создает новый процесс с помощью следующих параметров:

  • nil: Обратный handle родительского процесса.
  • 'c:\windows\sndrec32.exe e:\temp.wav': Команда для нового процесса. В этом случае она запускает исполняемый файл sndrec32.exe с аргументом e:\temp.wav.
  • nil, nil: Буфер и размер буфера для стандартного ввода.
  • false: Унаследовать handles от родительского процесса.
  • CreateDefaultErrorMode: Режим ошибок для нового процесса. В этом случае он установлен в default error mode.
  • nil, nil: Буфер и размер буфера для стандартного вывода.

Ожидание завершения процесса Наконец, код ожидает завершения процесса с помощью функции WaitForSingleObject:

WaitForSingleObject(p.hProcess, Infinite);  // Ожидать завершения процесса
Form1.WindowState:=wsNormal;  // Установка состояния окна Form1 в нормальном состоянии

Этот код ожидает завершения процесса с помощью вызова функции WaitForSingleObject с следующими параметрами:

  • p.hProcess: Handle процесса.
  • Infinite: Значение таймаута. В этом случае оно означает, что функция будет ждать до тех пор, пока процесс не закончится. После завершения процесса код устанавливает состояние окна Form1 в нормальном состоянии (wsNormal).

В целом, этот код предназначен для запуска процесса и ожидания его завершения выполнения, минимальизируя форму в meantime.

В статье описывается процесс запуска приложения на языке Pascal и ожидания его завершения с помощью функции CreateProcess и WaitforSingleObject.


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


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



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


реклама



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

Время компиляции файла: 2024-05-19 17:53:24
2024-05-20 02:21:27/0.007080078125/2