Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Windows beendet Programm nicht (https://www.delphipraxis.net/51124-windows-beendet-programm-nicht.html)

Flocke 6. Aug 2005 22:19

Re: Windows beendet Programm nicht
 
Zitat:

Zitat von TStringlist
Das wäre eigentlich nur dann möglich, wenn deine Application noch mehr Formen hätte und eine davon die QueryEndSession-Message davor schon bekommen und diese mit False beantwortet hätte.

:wall: Guter Tipp!
Als ich das gelesen habe ist mir siedend heiß eingefallen, dass das Hauptfenster von Delphi-Anwendungen ja ein unsichtbares ist (darum können Application.Title und MainForm.Caption unterschiedlich sein!).

Du kriegst gar kein WM_QUERYENDSESSION / WM_ENDSESSION, weil dein Hauptfenster nicht das Hauptfenster der Anwendung ist!

[... ich schau gerade mal in der OH ...]

Hmmm... in TApplication.WndProc in Forms.pas sieht das so aus:
Delphi-Quellcode:
WM_ENDSESSION:
  if TWMEndSession(Message).EndSession then
  begin
    CallTerminateProcs;
    Halt;
  end;
WM_QUERYENDSESSION:
  Message.Result := 1;
Sollte normalerweise also alles funktionieren...

Flocke 6. Aug 2005 22:31

Re: Windows beendet Programm nicht
 
Noch was (sorry für zwei Posts hintereinander)

Zitat:

Zitat von Matze
Also mein Msg-Log zeigt, dass folgende Messages aufgerufen werden (lParam):

Zitat:

0, 1, 1239556, 1240484, 1240528, 1241896, 1241952, 1241972, 1242004, 1242100, 1242968, 1243456, 1243896, 1243932, 1243940, 1376837, 9647792, 12321082, 12321301, 12779825, 13697557, 1244844, 316, 11469105, 1243568, 1243612, 1243920, 15008277, 1716, 1769796
Wohl am wichtigsten: Gegen Ende des Programmes:

Zitat:

512, 516, 517, 9647952, 9654092
Kann man irgendwo nachsehen, was welche Message ist? Im MSDN finde ich dazu nichts.

Kannst du in Message.pas nachschlagen.
Code:
512      $0200   WM_MOUSEMOVE
516      $0200   WM_RBUTTONDOWN
517      $0200   WM_RBUTTONUP
9647952  $933750 ??? RegisterWindowMessage
9654092  $934F4C ??? RegisterWindowMessage
Kann nicht viel daraus erkennen. Die beiden hohen Meldungsnummer scheinen mit RegisterWindowMessage registriert worden zu sein.

Evtl. sind Fenstermeldungen auch Atoms und du kannst den Namen über GlobalGetAtomName ermitteln.

gsh 6. Aug 2005 22:37

Re: Windows beendet Programm nicht
 
ich muss ehrlich sein ich verstehe nicht alles was ihr da mit WM_QUERYENDSESSION und WM_ENDSESSION und so weiter redet aber ich hatte einmal mit meinem Prog. ganz genau des gleiche Problemm. Es war ein kleines Prog. des im hintergrund lief und mir eine Meldung gab wenn ich ein neues e-mail in meiner Mailbox hatte aber als ich des Windows XP auschalten wollte weigerte es sich ganz penetrant dagegen ich hab echt ewig meinen source durchsucht (es war ja nicht viel) aber nichts.

Nur durch diesen Code zog des Prog. dann endlich beim beenden mit:
Delphi-Quellcode:
procedure TForm1.WMQueryEndSession(var M: TWMQueryEndSession);
begin
  inherited;
  close;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr.
Seite 2 von 2     12   

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