![]() |
OnClose problem
Hi,
Ich glaube ich werde schon im DP-Forum für meine etwas merkwürdigen Beiträge für Überwachungsprogramme berüchtigt. Tut mir leid, wenn ich irgendetwas falsch gemacht habe... Ich Programmiere ein Programm, der etwas wie ein Task-Manager "4Dummies" ist. Es kann nur anzeigen, welche Fenster und Programme offen oder minimiert sind und die Programme in der Taskbar auflisten. Es kann aber auch die Programme schließen (eben wie ein normaler Task-Manager). Damit das Programm nicht von externen Personen (Häcker u.a) dazu benutzt werden kann, Programme zum Abstürzen zu bringen, muss der Benutzter einen PIN eingeben, der bei der ersten Benutzung festgelegt und codiert gespeichert wird. Außerdem soll dieses Programm anzeigen, wann zuletzt ein- und ausgelogged wurde. Ich habe mich entschieden dazu die ONCLOSE Prozedur dafür zu benutzen... Mein Problem ist: Wie lasse ich die OnClose Prozedur laufen, wenn der Benutzer auslogged bzw. den Computer herunterfährt? |
Re: OnClose problem
Du meinst, das OnClose nicht aufgerufen wird, wenn Windows herunterfährt?
Der Einstiegspunkt beim Herunterfahren wäre:
Delphi-Quellcode:
Dort kannst Du Deine abschliessenden Dinge ausführen lassen.
TMyForm = class(TForm)
private procedure WMQueryEndSession(var Message: TWMQueryEndSession); message WM_QUERYENDSESSION; procedure WMEndSession(var Msg: TMessage); message WM_ENDSESSION; end; |
Re: OnClose problem
:? Wie baue ich das denn ein?
(Tut mir leid wenn ich so dumm frage... :( ) |
Re: OnClose problem
Einfach die beiden prozeduren oben in in den private-Bereich Deines Hauptformulares kopieren, Klasse vervollständigen.
Du benötigst eigentlich nur die WMEndSession.
Delphi-Quellcode:
TMyForm = class(TForm)
procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private Closed : Boolean; procedure DoClose; procedure WMEndSession(var Msg: TMessage); message WM_ENDSESSION; end; ... procedure TMyForm.FormCreate(Sender: TObject); begin Closed := false; end; procedure TMyForm.FormClose(Sender: TObject; var Action: TCloseAction); begin DoClose; end; procedure TMyForm.WMEndSession(var Msg: TMessage); begin DoClose; end; procedure TMyForm.DoClose; begin if Closed then exit; Closed := true; //sonst was machen end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 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 by Thomas Breitkreuz