Wie kann ich aus meiner Anwendung heraus ein anderes Programm starten?


Delphi 1: Die Win16-API stellt dafür die Funktion WinExec bereit:

winexec('C:\Program.exe', SW_SHOWNORMAL);

Wenn man direkt eine Datei mit WinExec öffnen möchte, muß man zuerst mit der Funktion "FindExecutable" die damit verknüpfte Anwendung ermitteln. Der folgende Funktion übergibt man den Namen einer Datei und erhält als Rückgabewert den Rückgabewert von WinExec:

  function OpenFile(FileName:string):integer;
  var FName, ExeName : PChar;
  begin
    ExeName:=StrAlloc(255);
    FName:=StrAlloc(255);
    StrPCopy(FName, FileName);
    if FindExecutable(FName, nil, ExeName)<32 then begin
      FileName:=StrPas(ExeName)+' '+StrPas(FName);
      Form1.Label2.Caption:=FileName;
      StrPCopy(ExeName, FileName);
      Result:=WinExec(ExeName, SW_ShowNormal);
    end else begin
      Result:=0;
    end;
    StrDispose(FName);
    StrDispose(ExeName);
  end;
Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

Delphi 2, 3, 4: In der Win32-API gibts dafür die Funktion ShellExecute zum Öffnen eines Programms oder einer Datei mit der dazugehörigen Anwendung:

  uses ShellAPI;

  ShellExecute(Application.MainForm.Handle, 'open', , , '', SW_SHOWNORMAL);

zum Drucken:

  ShellExecute(Application.MainForm.Handle, 'print', , '', '', SW_SHOWNORMAL);

zum senden einer E-Mail:

  ShellExecute(Application.MainForm.Handle, NIL, 'mailto:Name@domain','','', SW_SHOWNORMAL);

zum Öffnen einer Webseite:

  var Url : string;
  [...]
  url := 'http://www.irgendwas.de';
  ShellExecute(Application.MainForm.Handle, NIL, PChar(URL), '', '', SW_SHOWNORMAL);
Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

siehe auch:

Wie kann ich aus meiner Anwendung heraus ein anderes Programm starten und auf dessen Ende warten?
Wie kann aus meinem Programm heraus eine andere Anwendung schließen?


Delphi FAQ