Учись программированию на C++ Builder бесплатно!

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

Для использования функции ShellExecute в модуль надо добавить директиву препроцессора подключающую модуль ShellAPI, в котором описана функция:

#include "ShellAPI.h"

Функция ShellExecute инкапсулирует одноименную функцию API Windows. Параметр Wnd является дескриптором родительского окна, в котором отображаются сообщения запускаемого приложения. Обычно в качестве него можно просто указать Handle.

Параметр Operation указывает на строку с нулевым символом в конце, которая определяет выполняемую операцию. Эта строка может содержать текст «open» (открыть) или «print» (напечатать). Для 32-разрядных Windows определено еще одно значение: «explore» (исследовать) - открыть папку программой Windows «Проводник». Если параметр Operation равен NULL, то по умолчанию выполняется операция «open».

Параметр FileName указывает на строку с нулевым символом в конце, которая определяет имя открываемого файла или имя открываемой папки.
Параметр Parameters указывает на строку с нулевым символом в конце, которая определяет передаваемые в приложение параметры, если FileName определяет выполняемый файл. Если FileName указывает на строку, определяющую открываемый документ или папку, то этот параметр задается равным NULL.

Параметр Directory указывает на строку с нулевым символом в конце, которая определяет каталог по умолчанию.
Параметр ShowCmd определяет режим открытия указанного файла. Этот параметр может иметь множество различных значений. Обычно, как и для функции WinExec, используется значение SW_RESTORE, при котором окно запускаемого приложения активизируется и отображается на экране. Если это окно в данный момент свернуто или развернуто, то оно восстанавливается до своих первоначальных размеров и отображается в первоначальной позиции. Для приложений не Windows, для файлов PIF и т.д. состояние окна определяет само приложение.

Пример №1


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

ShellExecute(Handle, NULL, "file.doc", NULL, NULL, SW_RESTORE);

Пример №2


Если нужно не открыть, а напечатать документ, записывается аналогичный оператор, но изменяется значение параметра Operation:

ShellExecute(Handle, "print", "file.doc", NULL, NULL, SW_RESTORE);

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

Пример №3


Оператор открывает приложение Windows «Калькулятор»:

ShellExecute(Handle, "open", "Calc", NULL,NULL, SW_RESTORE);

Пример №4


Открывает папку c:\Program Files\Borland:

ShellExecute(Handle, "open", "c:\\Program Files\\Borland", NULL, NULL,SW_RESTORE);

Функция ShellExecute автоматически отыскивает приложение, связанное с типом открываемого документа, и запускает его. Но иногда вам может захотеться самому вызвать явным образом приложение, связанное с каким-то документом, например, чтобы передать ему какие-то дополнительные параметры. Помочь в этом может функция FindExecutable, которая возвращает имя и путь приложения, связанного с указанным файлом. Использование этой функции, как и предыдущих, требует включения в модуль ссылки на ShellAPI.


Поиск по сайту