Wie man ein externes Programm in Delphi startet und Parameter übergibt

In diesem Tipp werde ich Ihnen zeigen, wie Sie ein externes Programm aus Ihrer Delphi-Anwendung starten und Parameter an dieses übergeben können. Dies ist eine wichtige Funktionalität, die Ihnen ermöglicht, Ihre Anwendung nahtlos mit anderen Programmen zu integrieren.

Alternative 1: Verwendung von WinExec

Die Funktion WinExec hat 2 Parameter: den Pfad zur .exe-Datei und ein Parameter, welcher definiert wie das Programm angezeigt werden soll:

WinExec('C:\meinprogramm.exe param1 param2', SW_SHOW);Code-Sprache: Delphi (delphi)

In diesem Beispiel starten wir das Programm „C:\meinprogramm.exe“ und übergeben die Parameter „param1“ und „param2“.
Für den zweiten Parameter (hier „SW_SHOW“) gibt es verschiedene weitere Optionen, welche hier nachgelesen werden können. SW_SHOW öffnet das Programm mit seinen aktuellen Standard-Größen- und Positionsparametern und aktiviert es gleichzeitig.

Soll der Pfad zur .exe-Datei aus einer Variablen kommen, muss diese als PAnsiChar definiert sein. Hier ein Beispiel:

var cmdLine: pansichar;
    pfad: string;
    exeDatei: string;
begin
   pfad := ExtractFileDir(ParamStr(0)); // Pfad in der das Programm aktuell gestartet wurde
   exeDatei := 'meinprogramm.exe';      // Name der zu startenden .exe Datei
   cmdLine := PAnsiChar(AnsiString(pfad + '\' + exeDatei param1 param2));
   WinExec(cmdLine, SW_SHOW);
end;Code-Sprache: PHP (php)

Alternative 2: ShellExecute verwenden

Eine andere Möglichkeit, Parameter zu übergeben, ist die Verwendung der Funktion ShellExecute. Hier ist das gleiche Beispiel, aber mit ShellExecute umgesetzt:

uses ShellApi;
var
  parameter: String;
begin
  parameter := 'param1 param2';
  ShellExecute(0, 'open', 'C:\meinprogramm.exe', PChar(parameter), nil, SW_SHOW);
end;Code-Sprache: Delphi (delphi)

Wichtig: Wenn Sie einen String als Parameter übergeben, müssen Sie die Funktion PChar() verwenden.

Zusammenfassung

Das Starten externer Programme und die Übergabe von Parametern in Delphi sind wichtige Funktionalitäten, die Ihnen ermöglichen, Ihre Anwendung zu erweitern und mit anderen Programmen nahtlos zu interagieren. Die Verwendung von WinExec oder ShellExecute je nach Anforderung bietet Ihnen die Flexibilität, externe Programme effizient in Ihre Delphi-Anwendung zu integrieren.

Zusatztipp: Virenscanner

Gelegentlich kann es vorkommen, dass ein Virenscanner bei Programmen welche ShellExecute verwenden, diese fälschlicherweise als Virus einstuft. Hier kann es helfen, stattdessen WinExec zu verwenden.