logo
Posobie_Ravino_Atamanov

2.5.5.6. Вызов внешнего приложения

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

Функция ShellExecute открывает или печатает указанный файл или открывает указанную папку.

Синтаксис функции следующий:

function ShellExecute(Wind: HWnd;

Operation, FileName, Parameters, Directory: PChar;

ShowCmd: Integer):THandle;

Функция ShellExecute позволяет выполнить любое приложение Windows. Можно также открыть файл документа, что означает выполнение связанного с ним приложения и загрузку в него этого документа. Например, обычно с документами, имеющими расширение .doc, связан MS Word. В этом случае открыть файл, например, с именем file.doc означает запустить MS Word и передать ему в качестве параметра имя файла file.doc. Кроме описанных возможностей функция ShellExecute позволяет распечатать указанный файл или открыть указанную папку. Последнее означает, что будет запушена программа «Проводник» с открытой указанной папкой.

Примеры использования.

1. Пусть требуется открыть файл документа с именем file.doc. т.е. запустить MS Word (обычно именно он связан с файлами .doc), загрузив в него указанный файл. Это делает оператор:

ShellExecute(Handle,nil,'file.doc',nil,nil,SW_RESTORE);

2. Печать документа осуществляется аналогично рассмотренному выше, только надо задать соответствующее значение параметра Operation:

ShellExecute(Handle,'print','file.doc',nil,nil,SW_RESTORE);

Выполнение этого оператора будет протекать следующим образом. Запустится MS Word, связанный с файлами .doc, в него загрузится файл file.doc, затем из MS Word запустится печать с атрибутами по умолчанию, после чего файл file.doc выгрузится из MS Word.

3. Пример открытия приложения Калькулятор:

ShellExecute (Handle,'open','Calc', nil, nil, SW_RESTORE);

4. Пример открытия папки c:\ProgramFiles\Borland:

ShellExecute (Handle, 'explore', 'c:\Program Files\Borland', nil, nil, SW_RESTORE);

Функция WinExec запускает указанное приложение.

Синтаксис функции следующий:

function WinExec(CmdLine:PChar;

CmdShow:integer):integer;

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

Если имя указано без пути, то Windows ищет выполняемый файл в следующей последовательности:

1. Каталог, из которого загружено приложение.

2. Текущий каталог,

3. Системный каталог Windows.

4. Список каталогов из переменной окружения РAТН.

Параметр CmdShow определяет форму представления окна запускаемого приложения Windows. Для приложений не Windows, для файлов PIF и т.д. состояние окна определяет само приложение.

Достоинством функции WinExec является ее совместимость с ранними версиями Windows.

При работе с Win32 функция WinExec завершает работу, если вызванное приложение вызывает функцию GetMessage или заканчивается выделенный лимит времени. Таким образом, ожидание можно прервать, предусмотрев в процессе, запушенном е помощью WinExec, в нужный момент вызов функции GetMessage.

Примеры.

Запуск программы file.exe

WinExec ('file.exe', SW_RESTORE);

Запуск MS-DOS

WinExec('COMMAND.COM',SW_REST0RE);