Zitat von
Binärbaum:
Allerdings glaube ich mich zu erinnern, dass es auch eine entsprechende Funktion für den Aufruf eines Prozesses gibt, die dann auch direkt wartet, bis der aufgerufene Prozess abgearbeitet ist, jedoch ist mir der Name entfallen. Weiß jemand, wie diese Funktion heißt?
Meinst Du zufällig das hier?:
Delphi-Quellcode:
procedure ShellExecAndWait(dateiname: string; Parameter: string);
var executeInfo: TShellExecuteInfo;
dw: DWORD;
begin
FillChar(executeInfo, SizeOf(executeInfo), 0);
with executeInfo do begin
cbSize := SizeOf(executeInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
executeInfo.lpVerb := 'open';
executeInfo.lpParameters := PChar(Parameter);
lpFile := PChar(dateiname);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@executeInfo) then dw := executeInfo.HProcess
else begin
ShowMessage('Fehler: ' + SysErrorMessage(GetLastError));
Exit;
end;
while WaitForSingleObject(executeInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(dw);
end;
Ruft das programm mittels ShellExecute(Ex) auf und wartet mittels WaitForSingleObject auf dessen Ende.
muss allerdings gestehen, dass ich nicht mehr weiß, wo ich das herhabe