Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ShellExecuteandWait - Status abfragen (https://www.delphipraxis.net/32234-shellexecuteandwait-status-abfragen.html)

Lord_Stifterl 20. Okt 2004 15:56


ShellExecuteandWait - Status abfragen
 
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

toms 21. Okt 2004 07:36

Re: ShellExecuteandWait - Status abfragen
 
Hi,

Hast du schon eine Antwort gefunden?

Lord_Stifterl 21. Okt 2004 09:30

Re: ShellExecuteandWait - Status abfragen
 
Zitat:

Hast du schon eine Antwort gefunden?
Leider muss ich die Frage mit Nein beantworten. Hab mich zwar schon bei microsofts msdn schlau gemacht und auch so einiges gefunden, jedoch nicht wirklich was ich gesucht habe. Was mich ein wenig verzweifeln lässt ist die Tatsache, dass ich zwar, wie schon erwähnt, ein bisschen schlauer geworden bin, aber ich noch immer nicht weiß wie ich folgendes ändern müsste, damit ich einen anderen status abfragen kann bzw. mit welchem Wert ich dies tun kann.


Delphi-Quellcode:
                while WaitForSingleObject(ExInfo.hProcess, 50) <> WAIT_OBJECT_0 do
                        Application.ProcessMessages;
Bezüglich den Werten oder mit welcher Funktion ich dies am besten machen könnte, steht leider nichts in der msdn.

LG

UweR 21. Okt 2004 10:40

Re: ShellExecuteandWait - Status abfragen
 
Du könntest möglicherweise statt mit WaitForSingleObject mit GetExitCodeProcess arbeiten. Das hilft dir aber nur weiter wenn das aufrufende Progeramm wirklich verschiedene Exit-Codes liefert. Sonst fällt mir dazu auch nichts ein.

Lord_Stifterl 21. Okt 2004 10:52

Re: ShellExecuteandWait - Status abfragen
 
Nun ja...das ist sicher ein Anfang, jetzt müsste ich nur herausfinden ob dies auf das Windows Servicepack bzw. auf ein Hotfix zutrifft. Dazu werde ich ja hoffentlich doch noch etwas finden.

Danke auf jeden Fall.

LG


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz