Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Запуск программ из Delphi

Delphi , Программа и Интерфейс , Приложения чужие



Оформил: DeeCo

В этой статье вы научитесь применять функцию Windows API ShellExecute. Ее применяют в тех случаях, когда мы, например, хотим открыть файл в соответствии с его расширением, не зная, какая программа ассоциирована с таким файлами. Итак, начнем с простого:

- Запустить блокнот (notepad)

uses ShellApi;
...ShellExecute(Handle, 'open',
  'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);

- Открыть текстовый файл c:\text.txt в блокноте

ShellExecute(Handle, 'open',
  'c:\windows\notepad.exe', 'c:\text.txt', < BR > nil,
  SW_SHOWNORMAL);

- Показать содержимое каталога c:\archive

ShellExecute(Handle, 'open', 'c:\archive', nil, nil,
  SW_SHOWNORMAL);

- Открыть файл в соответствии с расширением

ShellExecute(Handle,
  'open', 'c:\MyDocuments\Letter.doc', nil, nil, SW_SHOWNORMAL);

- Открыть html документ в браузере по умолчанию

ShellExecute(Handle,
  'open', 'http://src.fitkursk.ru', nil, nil, SW_SHOWNORMAL);
        
      

- Послать сообщение по электронной почте

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 + '&amp;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) then
begin
  repeatApplication.ProcessMessages;
  GetExitCodeProcess(SEInfo.hProcess, ExitCode);
until (ExitCode <> STILL_ACTIVE) or
Application.Terminated;
ShowMessage('Calculator  terminated');
end
else
  ShowMessage('Error starting Calc!');
end;

Статья предоставляет обзор использования функции Windows API ShellExecute в программировании на языке Delphi. Функция ShellExecute используется для запуска программы, открытия файла или отображения папки.

Примеры демонстрируют, как использовать функцию ShellExecute для выполнения следующих задач:

  1. Запустить программу Notepad (notepad.exe) с использованием верба "open".
  2. Открыть текстовый файл (.txt) с помощью Notepad (notepad.exe).
  3. Отобразить содержимое папки (каталога).
  4. Открыть файл на основе его расширения, не зная, какой программой он ассоциирован.
  5. Открыть HTML-документ в стандартном веб-браузере.

Кроме того, статья включает два дополнительных примера:

  1. Отправить электронное письмо с помощью протокола mailto, создавая строку, содержащую тему и текст письма.
  2. Запустить программу (в этом случае Windows Calculator) и дождаться ее завершения. Код использует ShellExecuteEx для запуска программы, а затем ProcessMessages и GetExitCodeProcess для ожидания ее завершения.

Примеры демонстрируют, как использовать функцию ShellExecute в программировании на языке Delphi для выполнения различных задач, связанных с запуском программ, открытием файлов и отображением папок.

Сводка кода:

Пример 1: Запуск Notepad и открытие файла

uses ShellApi;

procedure StartNotepad;
begin
  ShellExecute(Handle, 'open', 'c:\Windows\notepad.exe', nil, nil, SW_SHOWNORMAL);
end;

Пример 2: Открытие текстового файла в Notepad

uses ShellApi;

procedure OpenTextFile;
begin
  ShellExecute(Handle, 'open', 'c:\text.txt', 'c:\windows\notepad.exe', nil, SW_SHOWNORMAL);
end;

Пример 3: Отображение содержимого папки

uses ShellApi;

procedure DisplayDirectory;
begin
  ShellExecute(Handle, 'open', 'c:\archive', nil, nil, SW_SHOWNORMAL);
end;

Пример 4: Открытие файла на основе его расширения

uses ShellApi;

procedure OpenFileByExtension;
begin
  ShellExecute(Handle, 'open', 'c:\MyDocuments\Letter.doc', nil, nil, SW_SHOWNORMAL);
end;

Пример 5: Открытие HTML-документа в стандартном веб-браузере

uses ShellApi;

procedure OpenHTMLDocument;
begin
  ShellExecute(Handle, 'open', 'http://src.fitkursk.ru', nil, nil, SW_SHOWNORMAL);
end;

Пример 6: Отправка электронного письма с помощью протокола mailto

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 + '&amp;body=' + em_body;
  ShellExecute(Handle, 'open', PChar(em_mail), nil, nil, SW_SHOWNORMAL);
end;

Пример 7: Запуск программы и ожидание ее завершения

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
  begin
    fMask := 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;

  if ShellExecuteEx(@SEInfo) then
  begin
    repeat
      Application.ProcessMessages;
      GetExitCodeProcess(SEInfo.hProcess, ExitCode);
    until (ExitCode <> STILL_ACTIVE) or Application.Terminated;
    ShowMessage('Calculator terminated');
  else
    ShowMessage('Error starting Calc!');
  end;
end;

Эти примеры демонстрируют versatility функции ShellExecute в программировании на языке Delphi и способность ее использования для выполнения различных задач, связанных с запуском программ, открытием файлов и отображением папок.

В этой статье описывается использование функции Windows API ShellExecute для запуска программ из Delphi и открытия файлов, каталогов и отправки электронных писем.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Приложения чужие ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-28 06:31:14/0.0038199424743652/0