Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi FormCloseQuery verhindert das runterfahren von windows.. ? (https://www.delphipraxis.net/70428-formclosequery-verhindert-das-runterfahren-von-windows.html)

agm65 30. Mai 2006 08:57


FormCloseQuery verhindert das runterfahren von windows.. ?
 
guten morgen freunde, habe folgendes problem:
meinen FormCloseQuery:

Delphi-Quellcode:
if CloseForm = 1 then Canclose := True
else
CanClose := false;

  if not CanClose then
    hide;
das verhindert beim klick auf X das schließen der form.
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.

RavenIV 30. Mai 2006 09:00

Re: FormCloseQuery verhindert das runterfahren von windows..
 
Du solltest schon ein bisschen mehr Quellcode zeigen, dann wird das Helfen einfacher...

Luckie 30. Mai 2006 09:05

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 Hier im Forum suchenWM_QUERYENDSESSION.

agm65 30. Mai 2006 09:18

Re: FormCloseQuery verhindert das runterfahren von windows..
 
jo, vielen dank !

Olli 30. Mai 2006 09:23

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.

agm65 30. Mai 2006 09:25

Re: FormCloseQuery verhindert das runterfahren von windows..
 
und das war die lösung.

Delphi-Quellcode:
private
    { Private-Deklarationen }
      procedure WMQueryEndSession (var Msg : TWMQueryEndSession); message WM_QueryEndSession;


procedure TForm1.WMQueryEndSession (var Msg : TWMQueryEndSession);
begin
Msg.Result := 1;
Close;
end;
danke euch

Luckie 30. Mai 2006 09:48

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:
CanClose := CloseForm;
if not CanClose then
  hide;
Und in WM_QUERRYENDSESSION:
Delphi-Quellcode:
procedure TForm1.WMQueryEndSession (var Msg : TWMQueryEndSession);
begin
  Msg.Result := 1;
  CloseForm := True;
  Close; // Wird das noch gebraucht? Ich weiß es nicht.
end;

agm65 30. Mai 2006 10:01

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 :) !

Robert Marquardt 30. Mai 2006 10:12

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.

agm65 30. Mai 2006 10:15

Re: FormCloseQuery verhindert das runterfahren von windows..
 
okay danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 Uhr.
Seite 1 von 2  1 2      

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