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 , то она оставлена только для совместимости.