FormCloseQuery verhindert das runterfahren von windows.. ?
guten morgen freunde, habe folgendes problem:
meinen FormCloseQuery:
Delphi-Quellcode:
das verhindert beim klick auf X das schließen der form.
if CloseForm = 1 then Canclose := True
else CanClose := false; if not CanClose then hide; ich übergebe 0 - 1 an CloseForm um das Programm zu schließen bzw zu hiden, wenn ich jetzt aber windows runterfahren will, geht das nicht und mein progg wird als einziges nicht geschlossen. danke für eure hilfe. |
Re: FormCloseQuery verhindert das runterfahren von windows..
Du solltest schon ein bisschen mehr Quellcode zeigen, dann wird das Helfen einfacher...
|
Re: FormCloseQuery verhindert das runterfahren von windows..
Weil Windows dein Programm nicht "normal" beenden kann, das verhinderst du ja erfolgreich. :? Wahrscheinlich wird Wiondows nach ein paar Sekunden dann versuchen dein Programm abzuschießen.
Aber diese Frage hatten wir schon oft bei solchen nicht-schließen-gegen-die-Standards-verstossen-Spielereien, deswegen such einfach mal nach WM_QUERYENDSESSION. |
Re: FormCloseQuery verhindert das runterfahren von windows..
jo, vielen dank !
|
Re: FormCloseQuery verhindert das runterfahren von windows..
Die relevanten Registrywerte zum Thema sind:
- WaitToKillAppTimeout - HungAppTimeout - WaitToKillServiceTimeout alles REG_DWORD unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l und in Millisekunden. Aber hier liegt einfach, wie Luckie schon bemerkte, eine Fehlfunktion seitens des Programmes vor. |
Re: FormCloseQuery verhindert das runterfahren von windows..
und das war die lösung.
Delphi-Quellcode:
danke euch
private
{ Private-Deklarationen } procedure WMQueryEndSession (var Msg : TWMQueryEndSession); message WM_QueryEndSession; procedure TForm1.WMQueryEndSession (var Msg : TWMQueryEndSession); begin Msg.Result := 1; Close; end; |
Re: FormCloseQuery verhindert das runterfahren von windows..
Aber dann wird ja wieder OnCloseQuery aufgerufen oder änderst du irgend wo den Wert von CloseForm?
Und warum ist CloseForm als Integer deklriert? Deklarier es als Boolen:
Delphi-Quellcode:
Und in WM_QUERRYENDSESSION:
CanClose := CloseForm;
if not CanClose then hide;
Delphi-Quellcode:
procedure TForm1.WMQueryEndSession (var Msg : TWMQueryEndSession);
begin Msg.Result := 1; CloseForm := True; Close; // Wird das noch gebraucht? Ich weiß es nicht. end; |
Re: FormCloseQuery verhindert das runterfahren von windows..
ist doch egal ob integer oder Boolen true/false oder 0/1 .... naja vielleicht ist Boolen doch besser :) !
|
Re: FormCloseQuery verhindert das runterfahren von windows..
Das ist eben nicht die richtige Loesung.
Bei WM_QUERYENDSESSION signalisiert man nur das man nichts gegen ein Runterfahren des Rechners hat. Wenn man sich hier beendet, dann kann es passieren das ein spaeter gefragtes Programm nicht Zustimmung signalisiert und das Herunterfahren damit abbricht. Das Programm hat sich also unnoetig beendet. |
Re: FormCloseQuery verhindert das runterfahren von windows..
okay danke
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz