Entwickler-Ecke
Windows API - Wie kann ich festellen ob Programm bendet ist?
highhatcompy - Fr 20.08.04 23:05
Titel: Wie kann ich festellen ob Programm bendet ist?
Hallo, ich hab da mal wieder ein Prob :oops: !
Ich arbeite an ein Backupprog und will wenn mein Masterprogramm beendet ist das Backup starten!
1. Wie kann ich feststellen ob mein Masterprog noch läuft oder beendet ist?
2. Wie hindere ich den Anwender Windows zu beenden solange das Backup läuft?
Wäre für Hilfe dankbar! :D
Grüße aus Thüringen
Highhatcompy
Moderiert von
Tino: Topic aus CLX / Delphi Language (Object-Pascal) verschoben am Mo 23.08.2004 um 10:19
.Chef - Sa 21.08.04 13:01
Zu erstens: Du kannst z.B. den Prozess von deinem "Masterprogramm" überwachen. Stichworte Process32First und Process32Next. Wenn du ein Beispiel brauchst, sag bescheid. ;-)
Zu zweitens: Du kannst die Windows-Message WM_QUERYENDSESSION abfangen.
Gruß,
Jörg
highhatcompy - Sa 21.08.04 23:53
Hallo und Danke für Deine Antwort :D !
Für ein Beispiel wäre ich Dir echt Dankbar, weil mit so etwas habe ich mich noch nicht beschäftigt.
Vieleicht hast Du ja auch ein Beispiel für WM_QUERYENDSESSION !? :D
Grüsse von mir
HHC
.Chef - So 22.08.04 08:52
Fürs 1. brauchen wir:
Und dann weiter mit:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| function IsProcessRunning(s : string) : Boolean; var h : THandle; p : TProcessEntry32; b : Boolean; begin Result:=False; h:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); p.dwSize:=SizeOf(h); b:=Process32First(h,p); while b do begin if ExtractFileName(p.szExeFile) = s then begin Result:=True; Break; end; b:=Process32Next(h,p); end; CloseHandle(h); end; |
Als weitere Möglichkeit könntest du auch eine Message festlegen, die du im Masterprogramm an dein zweites Programm schickst, wenn es geschlossen wird.
Nun zu 2.: Die Message kannst du ganz normal abfangen wie jede andere Message auch:
Delphi-Quelltext
1: 2: 3: 4: 5:
| type TForm1 = class(TForm) private procedure WMQueryEndSession(var msg : TWMQueryEndSession);message WM_QUERYENDSESSION; end; |
Ausgeführt wird dann:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.WMQueryEndSession(var msg : TWMQueryEndSession); begin msg.Result:=0; end; |
Indem du das Result auf 0 setzt, sagst du Windows, dass deine Anwendung nicht beendet werden kann.
So, das Ganze passt vielleicht eher ins WinAPI-Forum ...
highhatcompy - So 22.08.04 14:10
Hi,
echt super Deine Beispiele! Danke!
Aber ich kann Dein 2. Bsp. nicht nutzen weil das "Masterprog" nicht von mir geschrieben wurde(es ist eine Prozesssteuerungssoftware). Dein 1. Code hilft mir aber weiter!
Danke und viele Grüße
Highhatcompy
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!