Функция ShellExecute в Delphi открывает или выводит на печать указанный файл.
ShellApi unit
function ShellExecute(hWnd: HWnd; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST; stdcall;
ShellExecute — это функция Delphi Windows API, которая в основном используется для запуска внешних приложений из нашего приложения Delphi. Эта функция связана с функцией Windows API ShellExecute. Функция возвращает целое число, соответствующее коду ошибки, что очень полезно, когда нам нужно показать некоторый статус, сработала функция или нет.
Используя ShellExecute, мы также можем выполнять следующие операции:
- Печатать документы из программы, без явного запуска приложения, создавшего документ, например: распечатать документ Word, не запуская Word.
- Открывать браузер с локальной HTML-страницей.
- Переходить на сайт. То есть открывать внешнюю ссылку URL из приложения Delphi.
- Отправлять почту через Outlook.
Параметры:
hwnd — хендл родительского окна. Определяет родительское окно. Это окно получает любые окна сообщений, которые генерирует приложение. Например, приложение может сообщать об ошибке при помощи окна сообщений.
Operation — указатель на строку, определяющую операцию для выполнения. Строка должна завершаться нулевым символом.
Допустимы следующие значения Operation:
- open — функция открывает файл, указанный в параметре FileName. Файл может быть как исполнимым файлом, так и файлом документа. Файл может быть папкой, которую нужно открыть.
- print — функция открывает файл, указанный в параметре FileName. Файл должен быть файлом документа. Если файл является исполнимым файлом, функция открывает файл, как если бы было указано значение open.
- explore — функция исследует папку, указанную в параметре FileName, експлорером.
FileName — указатель на строку, определяющую имя файла для открытия или печати, или имя папки для открытия. Строка должна завершаться нулевым символом.
Parameters — указатель на строку параметров исполнимого файла. Если файл, заданный в параметре FileName является исполнимым файлом, то Parameters указывает на строку параметров, передаваемых приложению. Строка должна завершаться нулевым символом.
Directory — указатель на строку, определяющую директорию по умолчанию. Строка должна завершаться нулевым символом.
ShowCmd — определяет как файл будет показываться когда откроется. Если файл, заданный в параметре FileName является исполнимым файлом, то ShowCmd определяет как приложение будет показываться когда оно откроется.
Этот параметр может иметь одно из следующих значений (значения констант определены в модуле Windows):
- SW_HIDE — Скрывает окно приложения и активирует другое окно. Значение 0.
- SW_MAXIMIZE — Разворачивает указанное окно на весь экран. Значение 3.
- SW_MINIMIZE — Сворачивает указанное окно и активирует следующее по порядку окно. Значение 6.
- SW_RESTORE — Активирует и показывает окно. Если окно было свернуто или развернуто на весь экран, Windows восстанавливает окно до его нормальных размеров и позиции. Приложение должно указывать этот флаг когда восстанавливает свернутое окно. Значение *.
- SW_SHOW — Активирует окно и отображает его в текущем размере и позиции. Значение 5.
- SW_SHOWDEFAULT — Устанавливает режим показа основываясь на SW_флаге указанном в структуре STATUPINFO, передаваемой для функции CreateProcess программой, которая запускает приложение. Приложение должно вызвать ShowWindow с этим флагом для установки начального режима отображения своего окна. Значение 10.
- SW_SHOWMAXIMIZED — Активирует окно и отображает его в развернутом виде. Значение 3.
- SW_SHOWMINIMIZED — Активирует окно и отображает его в свернутом виде. Значение 2.
- SW_SHOWMINNOACTIVE — Отображает окно в свернутом виде. Активное окно остается активным. Значение 7.
- SW_SHOWNA — Отображает окно в его текущем состоянии. Активное окно остается активным. Значение 8.
- SW_SHOWNOACTIVATE — Отображает окно в его самом последнем размере и позиции. Активное окно остается активным. Значение 4.
- SW_SHOWNORMAL — Активирует и отображает окно. Если окно было свернуто или развернуто на весь экран, Windows восстанавливает его начальные размеры и позицию. Приложение должно указывать этот флаг когда впервые отображает свое окно. Значение 1.
*Если файл, заданный в параметре FileName является файлом документа, параметр ShowCmd должен быть нулевым.
Возвращаемое значение:
Если функция прошла успешно, возвращаемое значение представляет хендл экземпляра объекта приложения, которое было запущено или хендл динамического обмена данными (DDE) серверного приложения.
Если функция не прошла, возвращаемое значение представляет значение ошибки, которое меньше или равно 32.
Вот список этих ошибок (значения констант определены в модуле ShellAPI):
- 0 — Оперативной системе не хватает памяти или ресурсов. Значение 0.
- ERROR_FILE_NOT_FOUND — Указанный файл не найден. Значение 2.
- ERROR_PATH_NOT_FOUND — Указанный путь не найден. Значение 3.
- ERROR_BAD_FORMAT — .EXE файл не рабочий (не Win32 .EXE или ошибка в .EXE образе). Значение 11.
- SE_ERR_ACCESSDENIED — Операционная система отказывает в доступе к указанному файлу. Значение 5.
- SE_ERR_ASSOCINCOMPLETE — Имя ассоциированного файла не полное или не правильное. Значение 27.
- SE_ERR_DDEBUSY — Транзакция динамического обмена данными (DDE transaction) не может быть завершена потому что выполняются другие DDE транзакции. Значение 30.
- SE_ERR_DDEFAIL — Транзакция динамического обмена данными провалилась. Значение 29.
- SE_ERR_DDETIMEOUT — Транзакция динамического обмена данными не может быть завершена потому что истекло время ожидания ответа Значение 28.
- SE_ERR_DLLNOTFOUND — Указанная DLL библиотека не найдена. Значение 32.
- SE_ERR_FNF — Указанный файл не найден. Значение 2.
- SE_ERR_NOASSOC — Нет приложений ассоциированных с данным расширением файла. Значение 31.
- SE_ERR_OOM — Не достаточно памяти для завершения операции. Значение 8.
- SE_ERR_PNF — Указанный путь не найден. Значение 3.
- SE_ERR_SHARE — Нарушение совместного доступа. Значение 26.
Примечания.
Файл, указанный в параметре FileName может быть файлом документа или исполнимым файлом. Если это файл документа, функция ShellExecute открывает его или выводит на печать, основываясь на значении параметра Operation. Если же файл является исполнимым файлом, функция ShellExecute открывает его, даже если в параметре Operation задана печать.
Вы можете использовать ShellExecute чтобы открыть папку или исследовать ее с помощью эксплорера.
Если Operation – nil, функция открывает файл указанный в параметре FileName. Если Operation – 'open' или 'explore', то функция будет принудительно открывать окно или эксплорер.
Функция ShellExecute: Как открыть папку на компьютере
begin
ShellExecute(handle,nil,'C:\Program Files',nil,nil,SW_SHOWNORMAL); // Вариант 1 (Открываем папку Program Files, которая находится на диске C:)
end;
Функция ShellExecute: Как открыть папку на компьютере используя значение 'open'
begin
ShellExecute(handle,'open','C:\Program Files',nil,nil,SW_SHOWNORMAL); // Вариант 2 (Открываем папку Program Files, которая находится на диске C:)
end;
Функция ShellExecute: Как открыть папку на компьютере используя значение 'explore'
begin
ShellExecute(handle,'explore','C:\Program Files',nil,nil,SW_SHOWNORMAL); // Вариант 3 (исследовать папку Program Files с помощью эксплорера)
end;
Функция ShellExecute: Как открыть ссылку в браузере
begin
ShellExecute(handle,'open','https://d-nik.site',nil,nil,SW_SHOWNORMAL);
end;
Похожие функции, процедуры и команды
ShellExecuteEx — выполняет действие над файлом. Файл может быть выполняемым файлом или документом.
ShellExecuteA — работает с параметрами в ANSI.
ShellExecuteW — работает с параметрами в UNICODE.
