![]() |
Abfrage, ob ein gestartetes Programm noch läuft
Moin moin,
ich habe ein Programm geschrieben, das in mehreren Schritten Software installiert. Um die externen Setup Programme zu starten benutzte ich die Funktion RunAndWaitShell. ![]() Nach dem Start der Setup Programme setzte ich den "Beenden" Button meiner CD-Oberfläche auf
Delphi-Quellcode:
und nun meine Frage:
bBeenden.Enabled:=false;
Wie kann ich es nun anstellen, dass ich mitbekomme, wenn die Installation abgebrochen wird ?? dann soll sich auch meine Applikation mit einer Meldung verabschieden. Kann mir jemand eine Hilfestellung geben ?? Besten Dank ascotlx |
Re: Abfrage, ob ein gestartetes Programm noch läuft
Wenn du nach einer best. Exe wie um Taskmanager unter "Prozesse" gucken willst, dann geh mal auf
![]() |
Re: Abfrage, ob ein gestartetes Programm noch läuft
huhu!
mit der funktion hier kannst du schauen ob eine bestimmte exe noch läuft...
Delphi-Quellcode:
du könntest also mit:
function GetProcessID(Exename: string): DWORD;
var hProcSnap: THandle; pe32: TProcessEntry32; begin result := 0; hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0); if hProcSnap <> INVALID_HANDLE_VALUE then begin pe32.dwSize := SizeOf(ProcessEntry32); if Process32First(hProcSnap, pe32) = true then begin while Process32Next(hProcSnap, pe32) = true do begin if pos(Exename, pe32.szExeFile) <> 0 then result := pe32.th32ProcessID; end; end; CloseHandle(hProcSnap); end; end;
Delphi-Quellcode:
so lange dich verstecken bis das setup gekillt/beendet wurde...
//provisorisch...
self.hide; repeat sleep(100); until (GetProcessID('setup.exe')); self.show; gruß reli |
Re: Abfrage, ob ein gestartetes Programm noch läuft
Aber RunAndWaitShell wartet doch schon, bis der Prozess beendet wurde.
|
Re: Abfrage, ob ein gestartetes Programm noch läuft
Zitat:
"Beenden- Buttons" fest ?? |
Re: Abfrage, ob ein gestartetes Programm noch läuft
sind die externen setupprogramme von dir?
vllt kannst du nen exitcode auswerten, wie weiß ich auch nicht :/ |
Re: Abfrage, ob ein gestartetes Programm noch läuft
Wann deaktivierst du den Button denn? Zeig einfach mal die gesamte Prozedur, in der RunAndWaitShell aufgerufen wird.
|
Re: Abfrage, ob ein gestartetes Programm noch läuft
Du könntest nach dem Beenden des Installationsprozesses überprüfen, ob die Installation erfolgreich war, z.B. einen entsprechenden Registry-Schlüssel auslesen, der während der Installation geschrieben wird.
|
Re: Abfrage, ob ein gestartetes Programm noch läuft
@ dominikkv
moin dominik, ... die Setup Routine ist nicht von mir ... Zitat:
gerne doch .... und wenn ich des öfteren mal debuggen und LESEN würde, ginge mir so manchesmal eine Lampe auf :idea: . Sorry ... der Fehler ist gefunden... ich habe den Button einfach nicht zurückgesetzt .... Hier aber trotzdem die (korrigierte) Prozedur (Zeile 21-24 sind neu) ...
Delphi-Quellcode:
schönes Wochenende ... und nochmal danke (mache gleich noch einen "neuen" auf ...)
// *****************************************************************************
// Installation der SSC procedure RO1SSC; var FileP, ssc_dir, Param_ssc: string; err: Integer; begin bKonfiguration.Enabled:=false; bBeenden.Enabled:=false; Label9.Visible:=false; Label7.Left:=130; Label7.Font.Color:=clRed; Label7.Caption:='Bitte warten ... Bearbeitung läuft ...'; FileP := ExtractFilePath(Application.ExeName); Param_ssc:='/s /v"/qb REBOOT=force"'; err:=Form3.RunAndWaitShell(FileP+'SSC\'+'setup.exe',Param_ssc,ssc_dir,SW_SHOW); if (err >0) and (err < 32) then Showmessage(Form3.ShellExecuteErrMessage(Err)); if (err >32) then Showmessage(Form3.ShellExecuteErrMessage(Err)+#13#10+'Die Installation wird beendet.'); bBeenden.Enabled:=true; end; |
Re: Abfrage, ob ein gestartetes Programm noch läuft
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 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-2025 by Thomas Breitkreuz