![]() |
Ich rede vom Herunterfahren des Betriebsystems ...
Zitat:
|
Aber im Normalfall sollte daoch ein Programm vor dem Ausschalten des Computers schon beendet sein, oder?
|
:wiejetzt: was meinst du damit ... dass es vor dem Herrunterfahren von Hand geschlossen werden soll?
|
genau das...oder will er das nicht?
|
Hoi Stanlay,
er will, dass das Programm wenn man es mit [x] oder ALT+F4 schließt, nicht geschlossen wird sondern in die TNA minimiert wird, also muss er im OnCloseQuery CanClose auf False stellen. Aber wenn das Betriebsystem den Close-Aufruf sendet soll das Programm ja beendet werden. So wie der Code momentan ist muss er es jedes Mal von Hand schließen, sonst fährt das Betriebsystem nicht normal herrunter. |
Dann müsste er quasi die Message von Windows abfangen, damit CanClose auf true gesetzt werden kann, oder?
|
Was mir grade noch einfällt. Ich weiß nicht ob das geht. Aber man könnte doch nach jedem Minimieren canClose wieder auf true setzen, dann dürfte es doch auch keine Probleme mit dem Herunterfahren geben.
|
wenn ich nach dem minimieren CanClose auf True setze, wuerde das Programm sich erst minimieren und danach beenden...
im uebrigen soll das Programm ja die ganze Zeit laufen, wenn Windows an ist, daher wird es wohl keiner vorher ausmachen wollen.. ueber den taskmanager kann man das mit meiner variante schon noch schliessen, nur halt beim runterfahren bleibt das programm an (es minimiert sich eben nur) und windows faehrt nicht runter. ich guck mir mal den Code in dem Post an. Mat |
Zitat:
@Mat, wenn du damit nicht weiterkommst melde dich nochmal ... |
mmh.. mit dem link hat's irgendwie nich gefunzt..
ich hab mir heute mal cooltrayicon angeschaut.. in der demo davon gab's auch diese funktion, die hab ich uebernommen und es funktioniert.. (versteh das zwar nich unbedingt, aber es geht. :)
Delphi-Quellcode:
meine OnCloseQuery-Funktion sieht dann so aus:
private
SessionEnding: Boolean; procedure WMQueryEndSession(var Message: TMessage); message WM_QUERYENDSESSION; procedure TForm_Main.WMQueryEndSession(var Message: TMessage); begin SessionEnding := True; Message.Result := 1; end;
Delphi-Quellcode:
wenn ich jetzt windows beende, wird nicht das Programm einfach geschlossen, ohne Abfrage, einfach so. Genau wie ich es haben will :)
procedure TForm_Main.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
var msg: Integer; text: String; askexit: Boolean; begin askexit := True; if reg_minonx and (not ExitButtonWasClicked) then askexit := False; if askexit then begin text := 'Wollen Sie wirklich beenden?'; msg := Application.MessageBox(Pointer(text), 'Beenden', MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION); if msg = IDYES then CanClose := True else CanClose := False; end else CanClose := False; if reg_minonx and (not ExitButtonWasClicked) then Application.Minimize; ExitButtonWasClicked := False; if SessionEnding then CanClose := True; end; Mat |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:48 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