DOSUG CZ– розовая кнопка на сайте!
Logo

Запуск программ из 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',
     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 + '&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 begin
    fMask := SEE_MASK_NOCLOSEPROCESS;
    Wnd := Application.Handle;
    lpFile := PChar(ExecuteFile);
   {
     ParamString can contain the
     application parameters.
   }
 // lpParameters := PChar(ParamString);
   {
     StartInString specifies the
     name of the working directory.
     If ommited, the current directory is used.
   }
// lpDirectory := PChar(StartInString);
    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');
  end
  else ShowMessage('Error starting Calc!');
end;
главная - о проекте - контакты - реклама на сайте
 
LBN100 Elite

SoftStudio.Ru - студия разработки программ
LBN100 Elite