В этой статье вы научитесь применять функцию Windows
API ShellExecute. Ее применяют в тех случаях, когда мы, например, хотим
открыть файл в соответствии с его расширением, не зная, какая программа
ассоциирована с таким файлами. Итак, начнем с простого:
var
em_subject, em_body, em_mail: string;
begin
em_subject := 'This is the subject line ';
em_body := ' Message body text goes here';
em_mail := 'mailto:alex@fitkursk.ru?subject='
+ em_subject + '&body=' + em_body;
ShellExecute(Handle, 'open', PChar(em_mail), nil, nil, SW_SHOWNORMAL);
end;
- Дожидаемся окончания запущенной программы
// фрагмент кода запускает калькулятор и// выдает сообщение, когда он закрываетсяuses
ShellApi;
...var
SEInfo: TShellExecuteInfo;
ExitCode: DWORD;
ExecuteFile, ParamString, StartInString: string;
begin
ExecuteFile := 'c:\Windows\Calc.exe';
FillChar(SEInfo, SizeOf(SEInfo), 0);
SEInfo.cbSize := SizeOf(TShellExecuteInfo);
with SEInfo do
beginfMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Application.Handle;
lpFile := PChar(ExecuteFile);
{ParamString can contain theapplication parameters.}// lpParameters := PChar(ParamString);{StartInString specifies thename of the working
directory.If ommited, the current
directory is used.}// lpDirectory := PChar(StartInString);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@SEInfo) thenbegin
repeatApplication.ProcessMessages;
GetExitCodeProcess(SEInfo.hProcess, ExitCode);
until (ExitCode <> STILL_ACTIVE) or
Application.Terminated;
ShowMessage('Calculator terminated');
endelse
ShowMessage('Error starting Calc!');
end;
Статья предоставляет обзор использования функции Windows API ShellExecute в программировании на языке Delphi. Функция ShellExecute используется для запуска программы, открытия файла или отображения папки.
Примеры демонстрируют, как использовать функцию ShellExecute для выполнения следующих задач:
Запустить программу Notepad (notepad.exe) с использованием верба "open".
Открыть текстовый файл (.txt) с помощью Notepad (notepad.exe).
Отобразить содержимое папки (каталога).
Открыть файл на основе его расширения, не зная, какой программой он ассоциирован.
Открыть HTML-документ в стандартном веб-браузере.
Кроме того, статья включает два дополнительных примера:
Отправить электронное письмо с помощью протокола mailto, создавая строку, содержащую тему и текст письма.
Запустить программу (в этом случае Windows Calculator) и дождаться ее завершения. Код использует ShellExecuteEx для запуска программы, а затем ProcessMessages и GetExitCodeProcess для ожидания ее завершения.
Примеры демонстрируют, как использовать функцию ShellExecute в программировании на языке Delphi для выполнения различных задач, связанных с запуском программ, открытием файлов и отображением папок.
Пример 6: Отправка электронного письма с помощью протокола mailto
varem_subject,em_body,em_mail:string;beginem_subject:='This is the subject line ';em_body:='Message body text goes here';em_mail:='mailto:alex@fitkursk.ru?subject='+em_subject+'&body='+em_body;ShellExecute(Handle,'open',PChar(em_mail),nil,nil,SW_SHOWNORMAL);end;
Пример 7: Запуск программы и ожидание ее завершения
usesShellApi;varSEInfo:TShellExecuteInfo;ExitCode:DWORD;ExecuteFile,ParamString,StartInString:string;beginExecuteFile:='c:\Windows\Calc.exe';FillChar(SEInfo,SizeOf(SEInfo),0);SEInfo.cbSize:=SizeOf(TShellExecuteInfo);withSEInfodobeginfMask:=SEE_MASK_NOCLOSEPROCESS;Wnd:=Application.Handle;lpFile:=PChar(ExecuteFile);// lpParameters can contain the application parameters.// lpDirectory specifies the name of the working directory. If omitted, the current directory is used.nShow:=SW_SHOWNORMAL;end;ifShellExecuteEx(@SEInfo)thenbeginrepeatApplication.ProcessMessages;GetExitCodeProcess(SEInfo.hProcess,ExitCode);until(ExitCode<>STILL_ACTIVE)orApplication.Terminated;ShowMessage('Calculator terminated');elseShowMessage('Error starting Calc!');end;end;
Эти примеры демонстрируют versatility функции ShellExecute в программировании на языке Delphi и способность ее использования для выполнения различных задач, связанных с запуском программ, открытием файлов и отображением папок.
В этой статье описывается использование функции Windows API ShellExecute для запуска программ из Delphi и открытия файлов, каталогов и отправки электронных писем.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.