In Delphi benutze ich diese Funktion um einen Prozess zu starten ohne die Hauptform einzufrieren:
Code:
procedure RunAndWaitShell(Executable, Parameter: STRING; ShowParameter: INTEGER);
var
Info: TShellExecuteInfo;
pInfo: PShellExecuteInfo;
exitCode: DWord;
begin
{Pointer to Info}
pInfo := @Info;
{Fill info}
with Info do
begin
cbSize := SizeOf(Info);
fMask := SEE_MASK_NOCLOSEPROCESS;
wnd := application.Handle;
lpVerb := NIL;
lpFile := PChar(Executable);
{Parametros al ejecutable}
{Executable parameters}
lpParameters := PChar(Parameter + #0);
lpDirectory := NIL;
nShow := ShowParameter;
hInstApp := 0;
end;
{Execute}
ShellExecuteEx(pInfo);
{Wait to finish}
repeat
exitCode := WaitForSingleObject(Info.hProcess, 500);
Application.ProcessMessages;
until (exitCode <> WAIT_TIMEOUT);
end;
Mit folgendem Kommando kann ich dies leider nicht in Linux mit FPC/Lazarus erreichen:
Code:
procedure TForm1.Button1Click(Sender: TObject);
var AProcess1: TProcess;
begin
AProcess1 := TProcess.Create(nil);
AProcess1.CommandLine := 'gparted';
AProcess1.Options := AProcess1.Options + [poWaitOnExit];
AProcess1.Execute;
AProcess1.Free;
ShowMessage ('gparted ended');
end;
Kennt Einer von Euch eine Möglichkeit das Gleiche unter Linux hinzubekommen?
Ein FPC/Lazarus hatte gemeint mit einem neuen Thread, weis aber leider noch nicht wie?