Функція 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.
