На этом уроке изучим запуск других приложений. Иногда из программы на Delphi требуется запустить другую программу. Для этого есть два способа и оба используют API -функции. Первый способ использует функцию API -функцию WinExec , а второй — ShellExecute . Посмотрим на применение этих функций в деле.
Сначала используем функцию ShellExecute . Для нее пример достаточно распространенный — мы сделаем гиперссылку на форме. Щелкаешь на ней — и оказываешься на некотором сайте. Часто такую ссылку можно видеть в окошке About . Для использования функции ShellExecute прежде всего добавляем ShellAPI в секцию uses нашего кода (иначе компилятор ругнется на эту функцию).
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, ShellAPI;
Далее помещаем на форме Label , и делаем в нем надпись синей и подчеркнутой (как это и принято для гиперссылки). Делаем двойной щелчок мышью на нашем Label1 для перехода в окно кода.
В обработчике пишем следующий код:
Установка и активация Delphi/Autocom 2016 (Delphi Cars и Delphi Trucks)
procedure TForm1.Label1Click(Sender: TObject);
ShellExecute(Form1.Handle, ‘open’, ‘http: //www.ya.ru’,
nil, nil, SW_SHOWNORMAL)
Запускаем программу, щелкаем на нашей гиперссылке и оказываем на сайте. Все как и ожидалось.
Рассмотрим параметры нашей функции более подробно.
Первый параметр ( Form1.Handle у нас) — это указатель на окно, из которого запускается другое приложение.
Второй параметр (у нас это open ) — показывает, что мы делаем. Значение open для него — самое распространенное. Еще из распространенных значений этот параметр может принимать print (для печати, естественно) и nil (которое фактически тоже самое, что и open ).
Четвертый параметр (у нас он nil ) — это параметры для запускаемого exe-файла (который должен стоять третьим параметром). Например, сюда можно написать, что за файл мы хотим открыть в Блокноте.
Остальные параметры не столь важны, так что если интересно, то смотрите в help .
Что же до функции WinExec , то она оставлена только для совместимости.
Указанный фрагмент запустит Блокнот.
Всё на этом урок закончен.
Источник: bdrc.ru
Программирование на Delphi
В этой статье вы научитесь применять функцию Windows API ShellExecute. Ее применяют в тех случаях, когда мы, например, хотим открыть файл в соответствии с его расширением, не зная, какая программа ассоциирована с таким файлами. Итак, начнем с простого:
— Запустить блокнот (notepad)
uses ShellApi; . ShellExecute(Handle, ‘open’, ‘c:Windowsnotepad.exe’, nil, nil, SW_SHOWNORMAL);
— Открыть текстовый файл c:text.txt в блокноте
ShellExecute(Handle, ‘open’, ‘c:windowsnotepad.exe’, ‘c:text.txt’, < BR >nil, SW_SHOWNORMAL);
— Показать содержимое каталога c:archive
ShellExecute(Handle, ‘open’, ‘c:archive’, nil, nil, SW_SHOWNORMAL);
— Открыть файл в соответствии с расширение м
Установка и активация Autocom Delphi DS150E cars 2015.Release3
— Открыть html документ в браузере по умолчанию
ShellExecute(Handle, ‘open’, ‘http://src.fitkursk.ru’, nil, nil, SW_SHOWNORMAL);
— Дожидаемся окончания запущенной программы
Программа и Интерфейс — Приложения чужие
Взаимодействие с чужими окнами
Источник: delphibaza.ru
Запуск внешнего приложения и ожидание его завершения
Пример показывает как из Вашей программы запустить внешнее приложение и подождать его завершения.
function ExecAndWait(const FileName, Params: ShortString; const WinState: Word): boolean; export; var StartInfo: TStartupInfo; ProcInfo: TProcessInformation; CmdLine: ShortString; begin < Помещаем имя файла между кавычками, с соблюдением всех пробелов в именах Win9x >CmdLine := ‘»‘ + Filename + ‘» ‘ + Params; FillChar(StartInfo, SizeOf(StartInfo), #0); with StartInfo do begin cb := SizeOf(SUInfo); dwFlags := STARTF_USESHOWWINDOW; wShowWindow := WinState; end; Result := CreateProcess(nil, PChar( String( CmdLine ) ), nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, PChar(ExtractFilePath(Filename)),StartInfo,ProcInfo); < Ожидаем завершения приложения >if Result then begin WaitForSingleObject(ProcInfo.hProcess, INFINITE); < Free the Handles >CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); end; end;
А вот пример вызова этой функции:
ExecAndWait( ‘C:windowscalc.exe’, », SH_SHOWNORMAL)
Параметр FileName = Имя внешней программы. Параметр Params = Параметры, необходимые для запуска внешней программы Параметр WinState = Указывает — как будет показано окно: Для этого параметра мы можем так же использовать следующие константы: SW_HIDE, SW_MAXIMIZE, SW_MINIMIZE, SW_SHOWNORMAL
Источник: thedelphi.ru