Externe Programme ausführen?

Hallo,

Ich hab ein Pascal Programm geschrieben und dies soll nun erweitert werden. Es soll externe Programme ausführen können (zB Paint), nur wie starte ich solche Programme?

Mfg baminc

Auch Hallo,

Mit „CreateProcess“ kannst du beliebige Programme starten.

Gruß
Manfred

Und dann?
CreateProcess (C:\Programm.exe) oder wie soll das gehen ich bin ein noob mir muss man noch sowas beibringen^^

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Und dann?
CreateProcess (C:\Programm.exe) oder wie soll das gehen ich
bin ein noob mir muss man noch sowas beibringen^^

Am besten schreibts Du Dir eine Function, die das erledigt. Die meißten Parameter von CreateProcess werden idR. nicht benötigt. Ansonsten findest Du eine ausführliche Beschreibung in der Hilfe (Windows SDK).

Function ExecProgram( Const csCmdLine : String; bHide : Boolean ) : Boolean;
Var
 StartupInfo : TStartupInfo;
 ProcessInfo : TProcessInformation;

Begin
 FillChar( StartupInfo, SizeOf( TStartupInfo ), 0 );
 With StartupInfo do Begin
 cb := SizeOf( TStartupInfo );
 dwFlags := STARTF\_USESHOWWINDOW or STARTF\_FORCEONFEEDBACK;
 If bHide then wShowWindow := SW\_HIDE
 else wShowWindow := SW\_SHOWNORMAL;
 End;

 Result := CreateProcess( nil, PChar( csCmdLine ), nil, nil, False,
 NORMAL\_PRIORITY\_CLASS, nil, nil, StartupInfo, ProcessInfo );
End;

Gruß
Christian

Kleine Frage am Rande
Hallo,

schonmal was von ShellExecute gehört?

Gruß
Thorsten

Hallo Thorsten,

schonmal was von ShellExecute gehört?

Klar. Aber es wurde gefragt, wie man CreateProcess verwendet.

Um zu entscheiden, was besser ist, müsste man mehr über den Zweck wissen. Vielleicht reicht hier ja ShellExecute aus.

Veilleicht muss aber der Prozess irgendwie manipuliert werden oder zu einem späteren Zeitpunkt gestartet werden? Oder die Priorität muß geändert werden. Oder das aufrufende Programm muss auf das Ende des Prozesses warten.

Es ist bestimmt nicht verkehrt, sich mit der Syntax von CreateProcess vertraut zu machen. Früher oder später kann man es gebrauchen.

Gruß
Christian

Natürlich kann man auch mit ShellExecute ein Programm starten.
CreateProcess ist jedoch wesentlich flexibler. Z.B. kann man das aufrufende Programm veranlassen zu warten, bis das aufgerufene Programm beendet ist. Man erhält die PID und den Handle zum neuen Prozess und vieles mehr.

Gruß
Manfred

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Du warst schneller.

Manfred