Учись программированию на C++ Builder бесплатно!
Содержание[Скрыть]

Функция 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
Поделиться