![]() |
Unterscheidung Programmende durch Windows-Shutdown oder manu
Hi,
da mein DSL-Volumentarif oft überschritten wird, habe ich einen kleinen TrafficMonitor geschrieben und auf den PCs der Kinder installiert, um wenigsten zu wissen, wer da mal wieder Gigabyteweise Daten gezogen hat. Damit das Programm aber nicht einfach ausgeschaltet werden kann, schreibe ich jedes Beenden in eine Log-Datei. Ideal wäre, wenn ich erkennen könnte, ob das Programm durch einen Windows-Shutdown beendet wurde oder ob es manuell (z.B. über ALT-F4) geschlossen wurde. Ich habe schon alle Schließ-Optionen die mit der Maus erreichbar sind entweder entfernt oder so angepasst, dass in der Log-Datei drinsteht, dass manuell beendet wurde, aber Alt-F4 bleibt immer noch übrig und den Task-Manager zum Abschießen gibt es ja auch noch. Die Kids dürfen das Programm ja auch beenden - ich möchte das aber mitbekommen! Gruß, Siggi |
Re: Unterscheidung Programmende durch Windows-Shutdown oder
Bei einem Windows-Shutdown wird eine eigene Message gesendet, die WM_QueryEndSession heißt. Sieh dir dazu mal den Beitrag hier an:
![]() Greetz alcaeus |
Re: Unterscheidung Programmende durch Windows-Shutdown oder
oder du könntest auch einen kleinen "guard" schreiben, der versteckt läuft und immer wieder überprüft, ob dein Programm noch läuft, läuft es nicht mahr, aber der guard noch, so kannst du davon ausgehen, dass es beendet wurde und eventuell dein Programm wieder starten.
|
Re: Unterscheidung Programmende durch Windows-Shutdown oder
In dem von MrKnogge erwähnten Fall kannst du sogar noch einen Schritt weitergehen:
Der Guard überprüft dein Programm und umgekehrt. Wird eines der Programme geändert so wird es sofort vom anderen Prog neu gestartet. Denn sonst könnte man ja zuerst den Guard abschießen und danach das andere. Wichtig: Wenn ein Prog über den Taskmanager abgeschossen wird, so gibts meines Wissens nach keine Message, also musst du das ausschließen. Greetz alcaeus PS: Wenn du WinXP verwendest, dann könntest du den Prozess ja "svchost.exe" heißen, denn von dem laufen normal 5, da wird es relativ schwer den richtigen in der Liste zu finden. |
Re: Unterscheidung Programmende durch Windows-Shutdown oder
geht nicht auch der code:
Delphi-Quellcode:
grüße
procedure TForm1.FormCloseQuery(Sender: TObject;
var CanClose: Boolean); begin CanClose:=False end; |
Re: Unterscheidung Programmende durch Windows-Shutdown oder
Hi,
beim Killen eines Prozesses, wird der Prozess nicht darüber benachrichtigt, dass es beendet wird. Er kriegt davon nichts mit... mfG mirage228 |
Re: Unterscheidung Programmende durch Windows-Shutdown oder
Zitat:
|
Re: Unterscheidung Programmende durch Windows-Shutdown oder
das programm vorm taskmanager geht so(ausgenommen bei NT und 2000):
Delphi-Quellcode:
und in OnCreate schreibst du dann:
function RegisterServiceProcess
(dwProcessID, dwType: DWord) : DWord; stdcall; implementation {$R *.DFM} function RegisterServiceProcess(dwProcessID, dwType: DWord): DWord; external 'KERNEL32.DLL' name 'RegisterServiceProcess';
Delphi-Quellcode:
RegisterServiceProcess(0,1);
|
Re: Unterscheidung Programmende durch Windows-Shutdown oder
Moin Siggi,
So kannst Du es ALT-F4 fest machen:
Delphi-Quellcode:
type
TForm1 = class(TForm) private { Private-Deklarationen } public { Public-Deklarationen } procedure WMSYSCOMMAND(var msg : TMessage); message WM_SYSCOMMAND; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.WMSYSCOMMAND(var msg: TMessage); begin if msg.WParam = SC_CLOSE then exit; inherited; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 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