delphi запуск внешнего приложения

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

В этой статье вы научитесь применять функцию Windows API ShellExecute. Ее применяют в тех случаях, когда мы, например, хотим открыть файл в соответствии с его расширением, не зная, какая программа ассоциирована с таким файлами. Итак, начнем с простого:

— Запустить блокнот (notepad)

— Открыть текстовый файл c: ext.txt в блокноте

— Показать содержимое каталога c:archive

— Открыть файл в соответствии с расширение м

— Открыть html документ в браузере по умолчанию

— Дожидаемся окончания запущенной программы

Статья Запуск программ из Delphi раздела Программа и Интерфейс Приложения чужие может быть полезна для разработчиков на Delphi и FreePascal.

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

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

Пример показывает как из Вашей программы запустить внешнее приложение и подождать его завершения.

А вот пример вызова этой функции:

  • Параметр FileName = Имя внешней программы.
  • Параметр Params = Параметры, необходимые для запуска внешней программы
  • Параметр WinState = Указывает — как будет показано окно:

Для этого параметра мы можем так же использовать следующие константы: SW_HIDE, SW_MAXIMIZE, SW_MINIMIZE, SW_SHOWNORMAL

PS: Этот код тестировался в delphi версий 3, 4 и 5.

На этом уроке изучим запуск других приложений. Иногда из программы на Delphi требуется запустить другую программу. Для этого есть два способа и оба используют API -функции. Первый способ использует функцию API -функцию WinExec , а второй — ShellExecute . Посмотрим на применение этих функций в деле.

Сначала используем функцию ShellExecute . Для нее пример достаточно распространенный — мы сделаем гиперссылку на форме. Щелкаешь на ней — и оказываешься на некотором сайте. Часто такую ссылку можно видеть в окошке About . Для использования функции ShellExecute прежде всего добавляем ShellAPI в секцию uses нашего кода (иначе компилятор ругнется на эту функцию).

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, ShellAPI;

Далее помещаем на форме Label , и делаем в нем надпись синей и подчеркнутой (как это и принято для гиперссылки). Делаем двойной щелчок мышью на нашем Label1 для перехода в окно кода.

В обработчике пишем следующий код:

procedure TForm1.Label1Click(Sender: TObject);

ShellExecute(Form1.Handle, ‘open’, ‘http: //www.ya.ru’,

nil, nil, SW_SHOWNORMAL)

Запускаем программу, щелкаем на нашей гиперссылке и оказываем на сайте. Все как и ожидалось.

Рассмотрим параметры нашей функции более подробно.

Первый параметр ( Form1.Handle у нас) — это указатель на окно, из которого запускается другое приложение.

Второй параметр (у нас это open ) — показывает, что мы делаем. Значение open для него — самое распространенное. Еще из распространенных значений этот параметр может принимать print (для печати, естественно) и nil (которое фактически тоже самое, что и open ).

Третий параметр — это что мы, собственно открываем (печатаем и т. д.). Он может быть как именем конкретного exe (например, notepad.exe ), так и именем документа (например, test.doc) . В этом случае запустится приложение, ассоциированное с файлом открываемого типа (для *.doc — Word и т. д.). Третье значение для рассматриваемого параметра — это имя папки (например, D:Delphi ).

Четвертый параметр (у нас он nil ) — это параметры для запускаемого exe-файла (который должен стоять третьим параметром). Например, сюда можно написать, что за файл мы хотим открыть в Блокноте.

Остальные параметры не столь важны, так что если интересно, то смотрите в help .

Что же до функции WinExec , то она оставлена только для совместимости.

Оцените статью