Hallo alle miteinander,
wie kann ich bei der ShellExecuteandWait-Routine überprüfen wie das ausgeführte Programm beendet wurde, also ob es vom User abgebrochen wurde, aufgrund eines Fehlers abgebrochen ist oder weil der z.B. Kopiervorgang einfach abgeschlossen ist?
Delphi-Quellcode:
function ShellExecute_AndWait(FileName: string; Params: string): boolean;
var
exInfo: TShellExecuteInfo;
Ph: DWORD;
begin
Result := True;
Try
FillChar(exInfo, SizeOf(exInfo), 0);
with exInfo do
begin
cbSize := SizeOf(exInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
ExInfo.lpVerb := 'open';
ExInfo.lpParameters := PChar(Params);
lpFile := PChar(FileName);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@exInfo) then
Ph := exInfo.HProcess
else
begin
ShowMessage(SysErrorMessage(GetLastError));
Result := False;
Exit;
end;
while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(Ph);
Except
Result := False;
Exit;
End;
end;
Danke für im Vorhinein für alle Tipps und Ratschläge,
Liebe Grüße