Entwickler-Ecke
Windows API - Warten bis Programm fertig ist
Timelesk - Fr 10.08.07 10:19
Titel: Warten bis Programm fertig ist
Hallo,
ich arbeite derzeit an einem AutoInstaller für Programme.
Dazu lasse ich die Setup.exe starten und über SendMessage bzw. Postmessage Tastatureingaben simulieren.
Nun ist aber das Problem, dass z.B. die Installation (kopieren der Daten, Registry-Einträge, etc.) einige Zeit dauert.
Ich habe es derzeit so, dass das Programm einfach 1 Minute wartet, bis es fortfährt.
Gibt es eine Möglichkeit zu Prüfen, ob ein Programm, von dem ich das Handle habe, derzeit aktiv ist?
Ob es derzeit arbeitet?
Vielen Dank
gruß
Timelesk
jasocul - Fr 10.08.07 10:48
Prüfe in regelmäßigen Abständen, ob der Prozess noch existiert. Z.B. kannst Du GetWindowThreadProcessId nutzen, wenn Du das Handle kennst.
arj - Fr 10.08.07 11:08
Du kannst auch einfach die Funktion WaitForObject nehmen. Die ist für sowas da. ;)
Timelesk - Fr 10.08.07 12:33
Hallo,
@jasocul: Mit GetWindowThreadProcessId bekomme ich ja nur die ProcessId des aktuellen Prozesses raus und wenn ich z.B. in Notepad mehrere Zeilen schreiben lasse, dann ist diese ID immer gleich.
@arj: Bezüglich WaitForObject hab ich jetzt nichts gefunden. Lediglich ein Thema, dass sich aber mit Threads befasst hat. Delphi kennt den Befehl auch nicht.
Kannst du mir evtl. ein Beispiel geben?
Vielen Dank
gruß
Timelesk
AHT - Mo 20.08.07 13:28
Hallo Timelesk...
Wenn du die Setup über CreateProcess startest, bekommst du über die PROCESS_INFORMATION Struktur (letzter Parameter von CreateProcess) ein gültiges Handle auf den gestarteten Prozess zurückgeliefert. Dieses Handle kannst du mit der API GetExitCodeProcess verwenden und darüber prüfen, ob der gestartete Prozess noch läuft.
Gruß
AHT
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!