AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Programm in der TNA Windows kann nicht herunterfahren
Thema durchsuchen
Ansicht
Themen-Optionen

Programm in der TNA Windows kann nicht herunterfahren

Offene Frage von "MrDevil"
Ein Thema von MrDevil · begonnen am 5. Dez 2007 · letzter Beitrag vom 5. Dez 2007
Antwort Antwort
MrDevil

Registriert seit: 27. Dez 2006
Ort: Melle
62 Beiträge
 
Delphi 5 Standard
 
#1

Programm in der TNA Windows kann nicht herunterfahren

  Alt 5. Dez 2007, 03:02
hallo,


egal was ich mache Abmelden oder neustarten oder herunterfahren - mein Programm verhindert das..

dann fand cih hier in der CodeLib diesen Code:


Delphi-Quellcode:
procedure tmain_form.WMQUERYENDSESSION(var msg: TMessage);
begin
  msg.Result := 1;
  close;
end;


So weit so gut nun geht es aber erst nach dem ich 2 mal auf abmelden klickte oder 2 mal auf neustarten klickte.



Was noch merkwürdiger ist, ist wenn ich dies nehme


Delphi-Quellcode:
procedure tmain_form.WMQUERYENDSESSION(var msg: TMessage);
begin
ShowMessage('Windows geht nu put'); // scherzhaft
  msg.Result := 1;
  close;
end;
So erscheint die MEssage NICHT schon beim ersten versuch des reboots /abmelden sondern erst beim 2 mal


Also so wie ich das nun sehenreagiert aus welchen grunde mein programm erst beim zweiten mal sende der Nachricht von Windows auf die WMQUERYENDSESSION


Jemand eine idee?!
Gruss Jens
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#2

Re: Programm in der TNA Windows kann nicht herunterfahren

  Alt 5. Dez 2007, 07:10
Also soweit sieht es OK aus, höchstens bei Close; könnte ein Fehler liegen.

Laß dieses Close mal weg und versuch ob's ohne geht.
Der Rest scheint fehlerfrei, allerdings weiß ich nicht wie der Rest deiner Anwendung aussiehtund wie du diese Funktion genau in deine Form integriert hast.


Hab den Thread zwar nicht so verfolgt, aber dort geht's anscheinend auch darum.
Prgramm verhindert herunterfahren


Eventuell könntest du noch versuchen auch noch WM_ENDSESSION zu verarbeiten
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
MrDevil

Registriert seit: 27. Dez 2006
Ort: Melle
62 Beiträge
 
Delphi 5 Standard
 
#3

Re: Programm in der TNA Windows kann nicht herunterfahren

  Alt 5. Dez 2007, 13:33
Also ich habe es auch viele Arten versucht:

Windows benötigt immer 2 anläufe sich zu beenden wenn mein Programm aktiv -- und mein Programm reagiert auch erst beim 2ten mal auf die Beenden Message von Windows... (Geprüft mittels MessageShow)


Ich habe folgende Codes bzw. Varianten versucht:

Delphi-Quellcode:
procedure TForm1.shutdownevent(var Msg:TWMQUERYENDSESSION);
begin
  Msg.Result:=1;
  close; // <= ohne dieses zusätzliche Schliessen ging es nicht
  Inherited;
end;

Delphi-Quellcode:
procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
   Inherited;
   Message.Result := 1;
end;

Delphi-Quellcode:
procedure TForm1.WMQueryEndSession (var M: TWMQueryEndSession);
begin
  inherited; //Wichtig
Application.Terminate;
end;

Habe auch schon CanClose aus der Anwendung entfernt...

Hilft alles nichts
Gruss Jens
  Mit Zitat antworten Zitat
MrDevil

Registriert seit: 27. Dez 2006
Ort: Melle
62 Beiträge
 
Delphi 5 Standard
 
#4

Re: Programm in der TNA Windows kann nicht herunterfahren

  Alt 5. Dez 2007, 13:47
habe nun herausgefunden, das Windows bzw. mein Programm nur auf die

WM_ENDSESSION reagiert anstatt wie ich überall gelesen auf WM_QUERYENDSESSION


Soweit so gut habe nun

Delphi-Quellcode:
procedure WMEndSession(var Msg:TWMEndSession); message WM_ENDSESSION;

procedure tmain_form.WMEndSession(var Msg:TWMEndSession);
begin
  //Windows erlauben zu beenden
  Msg.Result := 1;

  //Programm schliessen
  close;

  inherited;
end;

Das funktioniert in so weit, dass das Programm beendet wird - aber Windows bricht dann zugleich auch den beenden vorgang ab und muss nochmal auf abmelden/neustarte klicken... also irgendwie immer noch keine Lösung ;-(




Vorsorglich habe ich nun aber auch das noch mit drinne

Delphi-Quellcode:
procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION;

procedure tmain_form.WMQueryEndSession (var Msg : TWMQueryEndSession);
begin
  //Windows erlauben zu beenden
  Msg.Result := 1;

  //Programm schliessen
  close;

  inherited;
end;
Gruss Jens
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 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