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



Вопросы
  Компонент PopupMenu
   Категория: Компоненты
  Удалить лишние символы из строки
   Категория: Текст и строки
  Число строкой с предстоящими нулями
   Категория: Текст и строки
  Форма всегда наверху
   Категория: Компоненты
  Подсветить часть текста в DBGrid
   Категория: Компоненты
  Удалить или оставить симолы
   Категория: Текст и строки
  Как создать ярлык
   Категория: Приложение
  Объект экрана — Screen
   Категория: Компоненты
  Установить в программу свои шрифты
   Категория: Приложение

Delphi - База Знаний: Как запустить приложение, дождаться его исполнения

  << Вернуться к Содержанию  

Uses
  ..., ShellAPI;

procedure StartAndWait( Name: PChar );
var
  ProcInfo: PShellExecuteInfo;
begin
   GetMem( ProcInfo, SizeOf( ProcInfo^ ) );
   with ProcInfo^ do begin
      Wnd := Application.Handle;
      cbSize := SizeOf( ProcInfo^ );
      lpFile := PChar( Name );
      lpParameters := nil;
      lpVerb := 'open';
      nShow := SW_SHOW;
      fMask := SEE_MASK_DOENVSUBST or SEE_MASK_NOCLOSEPROCESS;
   end;
   try
      Win32check( ShellExecuteEx( ProcInfo ) );
      while not Application.Terminated and
      ( WaitForSingleObject( ProcInfo.hProcess, 100 ) = WAIT_TIMEOUT ) do
        Application.ProcessMessages;
   finally
      if ProcInfo.hProcess <> 0 then
         CloseHandle( ProcInfo.hProcess );
      Dispose( ProcInfo );
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   ( Sender as TControl ).Enabled := false;
   StartAndWait( 'notepad.exe' );
   ( Sender as TControl ).Enabled := true;
end;
  << Вернуться к Содержанию