На этом уроке изучим запуск других приложений. Иногда из программы на Delphi требуется запустить другую программу. Для этого есть два способа и оба используют API-функции. Первый способ использует функцию API-функцию WinExec, а второй - ShellExecute. Посмотрим на применение этих функций в деле.
Сначала используем функцию ShellExecute. Для нее пример достаточно распространенный - мы сделаем гиперссылку на форме. Щелкаешь на ней - и оказываешься на некотором сайте. Часто такую ссылку можно видеть в окошке About. Для использования функции ShellExecute прежде всего добавляем ShellAPI в секцию uses нашего кода (иначе компилятор ругнется на эту функцию).
uses:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, ShellAPI;
Далее помещаем на форме Label, и делаем в нем надпись синей и подчеркнутой (как это и принято для гиперссылки). Делаем двойной щелчок мышью на нашем Label1 для перехода в окно кода.
В обработчике пишем следующий код:
procedure TForm1.Label1Click(Sender: TObject);
begin
ShellExecute(Form1.Handle, 'open', 'http://www.ya.ru',
nil, nil, SW_SHOWNORMAL)
end;
Запускаем программу, щелкаем на нашей гиперссылке и оказываем на сайте. Все как и ожидалось.
Рассмотрим параметры нашей функции более подробно.
Первый параметр (Form1.Handle у нас) - это указатель на окно, из которого запускается другое приложение.
Второй параметр (у нас это open) - показывает, что мы делаем. Значение open для него - самое распространенное. Еще из распространенных значений этот параметр может принимать print (для печати, естественно) и nil (которое фактически тоже самое, что и open).
Третий параметр - это что мы, собственно открываем (печатаем и т. д.). Он может быть как именем конкретного exe (например, notepad.exe), так и именем документа (например, test.doc). В этом случае запустится приложение, ассоциированное с файлом открываемого типа (для *.doc - Word и т. д.). Третье значение для рассматриваемого параметра - это имя папки (например, D:\Delphi).
Четвертый параметр (у нас он nil) - это параметры для запускаемого exe-файла (который должен стоять третьим параметром). Например, сюда можно написать, что за файл мы хотим открыть в Блокноте.
Остальные параметры не столь важны, так что если интересно, то смотрите в help.
Что же до функции WinExec, то она оставлена только для совместимости.
Пример применения:
WinExec('notepad.exe',SW_SHOWNORMAL)
Указанный фрагмент запустит Блокнот.
Всё на этом урок закончен.