![]() |
warten bis ShellExecute beendet ist
Hallo Leute,
ich hab' mal wieder ein Problem. In meinem Programm wird während der Laufzeit
Code:
ausgeführt, wenn eine im Archiv vorhandene Datei zur Bearbeitung nicht gefunden wird.
ShellExecute(Handle, nil, PChar('c:\programme\winrar\winrar.exe'), PChar(parameter), nil, SW_SHOW);
Danach wird auf eine Datei, die im Archiv enthalten sein sollte zugegriffen. Funktioniert im Einzelschrittmodus alles bestens. Beim Starten des entsprechenden Programmpunktes (ohne Einzelschrittmodus) erhalte ich an der Stelle
Code:
ein IOResult von 2, weil die entsprechende Datei ja noch gar nicht entpackt ist. ShellExecute läuft zu diesem Zeitpunkt noch.
AssignFile(f, path+file);
Reset(f); if IOResult <> 0 then begin // melde Fehler Wie kann ich feststellen, ob das mit ShellExecute ausgeführte Programm beendet wurde, um solange zu pausieren, bis der gestartete Vorgang beendet ist? mfg eddy |
Re: warten bis ShellExecute beendet ist
|
Re: warten bis ShellExecute beendet ist
Hallo eddy,
das Warten bis ein Prozess beendet wurde funkt nur mit ![]() Anbei ein Beispliel mit ShellExecuteEx:
Delphi-Quellcode:
{******************************************************************************}
FUNCTION StartAndWait(CONST ExecuteFile, ParamString: STRING): boolean; //http://delphi.about.com/library/weekly/aa040803a.htm {******************************************************************************} VAR SEInfo : TShellExecuteInfo; ExitCode : DWORD; BEGIN Result := False; 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 := True; END; END; |
Re: warten bis ShellExecute beendet ist
Hallo Armin,
da hab' ich ja Glück gehabt, daß sich Deine Antwort mit meiner "Gefunden-Meldung" überschnitten hat. Deine Variante gefällt mir persönlich besser und funktioniert bestens. mfg eddy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz