Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекції для 3ОТ1.doc
Скачиваний:
10
Добавлен:
21.02.2016
Размер:
16.31 Mб
Скачать

Контрольні питання

  1. Характеристика одноекземплярних прикладних застосувань

  2. Характеристика методів та властивостей одноекземплярних прикладних застосувань

АУДИТОРНЕ ЗАНЯТТЯ

Змістовий модуль 6: програмування з графами

Тема 6.5: організація прикладних застосувань

Лекція №51 – Виклик зовнішніх прикладних застосувань

План заняття

  1. Характеристика процедур виклику зовнішніх прикладних застосувань

  2. Характеристика методів та властивостей виклику зовнішніх прикладних застосувань

Часто возникает необходимость запускать другие внешние программы из разрабатываемого приложения. Для этого исполь­зуются такие API-функции, как WinExec и ShellExecute.

Функция WinExec (lpCmdLine: LPCSTR, uCmdShow: UINT) : UINT обеспечивает запуск внешней программы. В каче­стве параметров данной функции задаются имя запускаемого файла приложения и дополнительная информация (параметры работы вызываемой программы). Если не указан путь в имени запускаемого файла, то его поиск осуществляется, в первую оче­редь, в текущем каталоге, из которого запущено разрабатываемое приложение, а затем в текущем каталоге Windows; в системном каталоге Windows; в главном каталоге Windows; в каталогах, заданных для поиска командой PATH. Соответственно, если файл не найден, он запускаться не будет и при этом не выдаются ника­кие предупреждения или сообщения об ошибке.

Параметр uCmdShow определяет один из следующих способов отображения окна запускаемого приложения:

  • SWShowMaximized - максимальный размер окна;

  • SWShowMinimized - минимальный размер окна;

  • SW_ShowNormal - нормальный размер окна.

В качестве результата функция WinExec возвращает целое число, большее 31 (в случае успешного выполнения). При возник­новении ошибки могут быть возвращены следующие значения:

  • 0 — недостаточно памяти или других ресурсов;

  • ERRORBADFORMAT - неправильный формат файла;

  • ERRORFILENOTFOUND - не найден указанный файл;

  • ERROR_PATH_NOT_FOUND - не найден указанный путь.

Функция WinExec позволяет запускать как 16-, так и 32-раз­рядные приложения Windows, хотя сама является 16-разрядной, что обеспечивает совместимость с более ранними версиями Delphi.

Вызов лазерного проигрывателя Windows с помощью функции WinExec будет выглядеть следующим образом:

WinExec(PChar('CDPlayer.exe'), SW_ShowNormal);

Функция ShellExecute (hwnd: HWND, lpOperation: LPCSTR, lpFile: LPCSTR, lpParameters: LPCSTR, lpDirectory: LPCSTR, nShowCmd: INT) : HINSTANCE является 32-разрядной и предоставляет больше возможностей, чем функция WinExec, однако, как видно из ее описания, требует задания большего количества параметров при вызове. Данная функция позволяет запустить, открыть либо вывести на принтер указанный файл. Так, например, если указать исполняемый файл, то в результате будет осуществляться выполнение приложения. Если же указать файл электронной таблицы с расширением XLS, то произойдет вызов Microsoft Excel и последующее открытие таблицы. Наконец, если указать не файл, а каталог, то будет запу­щен Проводник Windows, в котором отображается содержимое данного каталога.

Параметры функции ShellExecute имеют следующее на­значение.

Параметр hwnd ссылается на окно приложения, из которого запускается другое приложение (в качестве ссылки на окно зада­ется его дескриптор).

Параметр lpOperation содержит строку, которая определя­ет тип выполняемой операции и может принимать одно из сле­дующих значений:

  • open — открыть файл или каталог, указанный параметром lpFile, либо запустить исполняемый файл, если он задан;

  • print - напечатать файл-документ, указанный парамет­ром lpFile, либо запустить исполняемый файл, если он задан;

  • explore - в окне Проводника Windows открыть каталог, указанный параметром lpFile.

Если для данного параметра задать значение nil, то по умол­чанию принимается значение open.

Параметр lpFile содержит строку с именем файла или ката­лога, для которых выполняется заданная операция.

Параметр lpParameters представляет собой строку, которая содержит дополнительные параметры, передаваемые приложению. Параметру lpParameters обычно задается значение nil, если открывается неисполняемый файл.

Параметр lpDirectory является строкой, в которой указы­вается имя каталога по умолчанию.

Параметр nShowCmd задает способ отображения окна запус­каемого приложения: нормальный размер окна, окно максимизи­ровано или окно минимизировано.

Функция ShellExecute возвращает ссылку на вновь запу­щенное приложение, значение которой в случае успешного вы­полнения больше 32. При неудачном выполнении данной функ­ции возвращается код ошибки.

В разделе uses следует указывать модуль ShellAPI, чтобы была возможность использовать функцию ShellExecute.

Рассмотрим несколько примеров практического использования функции ShellExecute.

Вызов Калькулятора Windows можно осуществить следующим образом:

ShellExecute(Application.MainForm.Handle, nil, PChar('Calc.exe'), nil, nil, SW_ShowNormal);

Следует обратить внимание на то, что в данном примере в ка­честве окна, которое вызывает Калькулятор, используется главная форма приложения Application. MainForm.

Открытие рисунка в формате BMP производится так:

ShellExecute(Forml.Handle, PChar('open'), PChar('risunok.bmp'), nil, PChar('С:\Graph'), SW_ShowNormal);

Здесь вызов производится формой с именем Forml. В резуль­тате выполнения такой функции из каталога C:\Graph будет от­крыт файл рисунка risunok.bmp. При этом для открытия графиче­ского файла будет автоматически использоваться программа, на­значенная для обработки рисунков данного типа, например графический редактор Jasc Paint ShopPro или редактор просмотра изображений ACDSee.

По аналогии с этим можно открыть и документ Word. Однако существует еще один способ.

ShellExecute(Forml.Handle, PChar('open'), PChar('Winword.exe'), PChar('Docl.doc'), . PChar('C:\Program Files\ Microsoft Office\ Office'), SW_ShowNormal);

В этом случае вызывается непосредственно сам текстовый ре­дактор Word, а в качестве параметра ему передается имя докумен­та, который и будет открыт.

Если требуется открыть и просмотреть содержимое папки C:\Program Files, то это можно сделать таким образом:

ShellExecute(Application.MainForm.Handle, PChar('explore'), PChar('С:\ProgramFiles'), nil, nil, SW_ShowNormal);

С помощью вызова функции такого вида будет запущен Про­водник Windows, в котором отобразится содержимое каталога C:\Program Files.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]