Entwickler-Ecke
Sonstiges (Delphi) - Feststellen, ob eine weitere Anwendung gestartet wurde
galagher - So 13.02.05 12:38
Titel: Feststellen, ob eine weitere Anwendung gestartet wurde
Hallo!
Wie kann mein Programm feststellen, ob ein weiteres Programm gestartet wurde? Ich meine, mein Programm wird gestartet, stellt fest, wie viele (wenn's geht, auch welche) Programme Windows gerade ausführt, wartet eine vorgegebene Anzahl an Sekunden, bis es sich beendet, wenn aber inzwischen eine weitere Anwendung gestartet wird, soll es sich sofort beenden.
Mein Programm zeigt eine Form mit einer Meldung an, aber ohne Button. Der Text könnte zB. lauten: "Dateien werden kopiert, bitte warten...". In diesem Sinn halt. Geht sowas überhaupt?
//Edit: Ach ja, es sollte auch erkennen können, wenn eine weitere Instanz von ihm selbst gestartet wurde! Danke vorerst!
Hansi@OMG - So 13.02.05 13:41
Zum Thema weitere Instanz, schau dir mal das Thema Mutex an.
Ansonsten könntest du es so machen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| uses tlhelp32;
procedure GetProcessList(const aProcessList: TStrings); var Snap: THandle; ProcessE: TProcessEntry32; begin aProcessList.Clear; Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); try ProcessE.dwSize := SizeOf(ProcessE); if Process32First(Snap, ProcessE) then Repeat aProcessList.Add(ProcessE.szExeFile); Until not Process32Next(Snap, ProcessE) else RaiseLastOSError; finally CloseHandle(Snap); end; end;
procedure TForm1.Button1Click(Sender: TObject); begin GetProcessList(listbox1.Items); end; |
du speicherst dir den listboxcount und machst einen Timer, der die Prozessliste neu erzeugt und wieder den Count vergleicht, ist er um 1 größer machst du ein close.
Das ist doch, was du wolltest, oder?
galagher - So 13.02.05 16:26
Hansi@OMG hat folgendes geschrieben: |
Das ist doch, was du wolltest, oder? |
Genau das, danke! An Mutex hab' ich auch gedacht, aber damit kann man ja nur Instanzen des den Mutex verwendenden Programms abfragen, so aber klappt's mit jedem Programm!
Nochmals danke!
F34r0fTh3D4rk - So 13.02.05 16:38
wie kann man denn abfangen, ob und welches programm gerade gestartet wurde, also das starten direkt abfangen ?
Hansi@OMG - So 13.02.05 18:46
Es müsste der letzte eintrag in der processlist sein.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!