скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

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



В этой статье вы научитесь применять функцию 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;





Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook