Hallochen,
ich danke Euch ganz doll für die Hilfe. Inzwischen hatte ich eine Routine gefunden, mit der ich ebenfalls den Exitcode auslesen konnte. Ich hab sie ein klein wenig verändert und gebe direkt den Exitcode zurück:
Delphi-Quellcode:
{******************************************************************************}
FUNCTION StartAndWait(CONST ExecuteFile, ParamString: STRING): integer;
//http://delphi.about.com/library/weekly/aa040803a.htm
{******************************************************************************}
VAR
SEInfo : TShellExecuteInfo;
ExitCode : DWORD;
BEGIN
Result := 0;
IF NOT FileExists(ExecuteFile) THEN Exit;
FillChar(SEInfo, SizeOf(SEInfo), 0);
SEInfo.cbSize := SizeOf(TShellExecuteInfo);
WITH SEInfo DO
BEGIN
fMask := SEE_MASK_NOCLOSEPROCESS;
Wnd := Application.Handle;
lpFile := PChar(ExecuteFile);
lpParameters := PChar(ParamString);
nShow := SW_SHOWNORMAL;
END;
IF ShellExecuteEx(@SEInfo) THEN
BEGIN
REPEAT
Application.ProcessMessages;
// Damit die Prozessorauslastung sinkt :-)
Sleep(100);
GetExitCodeProcess(SEInfo.hProcess, ExitCode);
UNTIL (ExitCode <> STILL_ACTIVE) OR Application.Terminated;
Result := Exitcode;
END;
END;
Das funktioniert sowohl mit der rar.exe als auch mit der Winrar.exe. Die Exitcodes entsprechen denen in der rar.txt beschriebenen.
Nikos Variante werde ich mir auch nochmal genauer ansehen.
Vielen lieben Dank nochmal,
Gina.