Функция ShellExecute() – это многофункциональная функция, позволяющая запускать указанное приложение, а также открывать документ с привязанным к нему программой и выполнять над ним какие-либо действия, например, печать этого документа. Например, текстовой файл .txt, по умолчанию, связан с блокнотом Windows. Функция ShellExecute(), чтобы открыть текстовой файл .txt запускает блокнот и загружает в него этот файл. Кроме этого, ShellExecute() часто используют для открытия каталога с помощью «Проводник» Windows.
Чтобы функция ShellExecute() заработала нужно в модуль приложения добавить директиву препроцессора, которая подключает модуль ShellAPI:
#include "ShellAPI.h"
У функции ShellExecute() несколько вариантов, отличающихся типом строк:
- ShellExecuteA – используется при кодировке ASCII.
- ShellExecuteW – используется при кодировке WCHAR (юникод).
Структура ShellExecute
HINSTANCE ShellExecute(
HWND hwnd,
LPCSTR lpOperation,
LPCSTR lpFile,
LPCSTR lpParameters,
LPCSTR lpDirectory,
INT nShowCmd
);
Параметры ShellExecute
Функция ShellExecute() инкапсулирует возможности API Windows.
- Wnd – дескриптор родительского окна и является основным параметром ShellExecute(). В нём отображаются сообщения приложения, которое будет вызвано. Если нужно просто запустить приложение, то указывается Handle.
- Operation – указывает какую операцию следует применить над файлом и имеет следующие значения:
- «open» (открыть) – открывает указанный файл;
- «print» (напечатать) – открывает и печатает указанный файл;
- «explore» (исследовать) – открывает указанный каталог «Проводник» Windows;
- NULL – по умолчанию выставляется значение «open».
- FileName – задаёт имя файла или папки, которые следует открыть.
- Parameters – если в FileName указан файл, то определяет передаваемые параметры в приложении. Если FileName задан как NULL, то определяет тип открываемого файла или папку.
- Directory – задаёт каталог по умолчанию.
- ShowCmd – устанавливает способ открытия файла, указанного в FileName.
Пример открытия файла
Необходимо программно открыть текстовой файл «cubook.pro.txt» через приложение, по умолчанию, блокнота Windows.
ShellExecuteA(Handle, NULL, "с:\\cubook.pro.txt", NULL, NULL, SW_RESTORE); //Указывается прямой путь до расположения файла в каталоге
ShellExecuteA(Handle, NULL, "cubook.pro.txt", NULL, NULL, SW_RESTORE); //Если файл лежит в одном каталоге с запущенным приложением
Пример печати файла
Необходимо содержимое документа распечатать на принтере.
ShellExecuteA(Handle, "print", "cubook.pro.txt", NULL, NULL, SW_RESTORE);
При выполнении команды «печать», откроется диалоговое окно установленных принтеров в системе, где можно выбрать параметры печати и запустить содержимое файл на распечатку.
Пример открытия приложения
При выполнении функции ShellExecute() будет запущен стандартный калькулятор Windows.
ShellExecuteA(Handle, "open", "Calc", NULL,NULL, SW_RESTORE);
Пример открытия каталога
ShellExecuteA(Handle, "open", "c:", NULL, NULL,SW_RESTORE); //Открывает локальный диск C