Forum: Win32/Win64 API (native code)
Delphi
by The_Unknown,
31. Okt 2009
Jetzt funktioniert es tatsächlich :thumb:
Kann es sein, dass inherited; den Konstruktor der Superklasse von WMQUERYENDESSEION aufruft (ähnlich zu super(); in Java)?
Jetzt fehlt mir nur noch eine Antwort auf ein weiteres - anscheinend nicht minder verzwicktes - Problem, wo mir niemand antwortet :(
--> http://www.delphipraxis.net/internal_redirect.php?p=1094740#1094740
Forum: Win32/Win64 API (native code)
Delphi
by The_Unknown,
28. Okt 2009
Ja, genau dieses Problem habe ich bei mir auch.
Nur wenn ich herunterfahre, und ich habe bei onCloseQuery showmessage('Hallo'); drin stehen, dann poppt diese meldung beim Herunterfahren auch nicht auf.
Ich bin langsam wirklich etwas ratlos in dieser Sache.
Forum: Win32/Win64 API (native code)
Delphi
by The_Unknown,
27. Okt 2009
Das hilft nicht wirklich weiter.
Ich schildere am besten mal, was ich genau damit machen will. Ich möchte, wenn ich das MainForm schließe, dass eine Nachricht kommt "Achtung: Das Programm ist immernoch geöffnet, nur dass es jetzt neben der Systemuhr ist..." (die Nachricht kommt natürlich nur 1x und dann nie wieder). Wenn nun allerdings der User herunterfährt und das Hauptfenster ist noch offen...
Forum: Win32/Win64 API (native code)
Delphi
by The_Unknown,
27. Okt 2009
Das sieht schon mal ganz gut aus, es tritt aber ein seltsamer Fehler auf. Ich habe es nun so gemacht:
function TForm1.WMEndSession(var Message: TMessage):Boolean;
begin
if (Message.Msg=WM_ENDSESSION) and TWMEndSession(Message).EndSession then
begin
SessionEnd := True; // diese kann dann ausgewertet werden
end;
Result:=False;
end;
Forum: Win32/Win64 API (native code)
Delphi
by The_Unknown,
26. Okt 2009
Nope, leider nicht. Das Abmelden z.B. wird nicht erkannt.
Forum: Win32/Win64 API (native code)
Delphi
by The_Unknown,
26. Okt 2009
Mhm, bei mir (Windows 7 x64):
OnCloseQuery
WM_QueryEndSession
Nur weiß ich nicht, ob das immer und bei jedem so ist. Anscheinend ja nicht :gruebel:
Gibts vielleicht noch eine andere Variante, das zu lösen?
Forum: Win32/Win64 API (native code)
Delphi
by The_Unknown,
26. Okt 2009
:gruebel: Naja, das ist, wie ich oben bereits geschrieben hatte, die falsche Reihenfolge, denn QueryEndSession kommt erst *nach* onClose, wenn es also schon zu spät ist.
Das hilft mir dementsprechend auch nicht weiter :(
Forum: Win32/Win64 API (native code)
Delphi
by The_Unknown,
26. Okt 2009
Aber das Event wird doch auch dann aufgerufen, wenn ich das Programm "von Hand" beende, sprich das kleine X oben rechts anklicke. Und genau hier soll ja unterschieden werden, ob der Rechner gerade am Herunterfahren ist oder nicht.
Forum: Win32/Win64 API (native code)
Delphi
by The_Unknown,
26. Okt 2009
Und wie stelle ich dann im onCloseQuery-Event fest, ob gerade heruntergefahren/abgemeldet/neugestartet wird?
Forum: Win32/Win64 API (native code)
Delphi
by The_Unknown,
26. Okt 2009
Hallo,
ich versuche gerade, folgendes zu bewerkstelligen:
Mein Programm öffnet im onClose-Event des Hauptformulars eine Messagebox. Diese soll allerdings nur kommen, wenn das Programm "von Hand" beendet wird, nicht aber, wenn Windows gerade am Herunterfahren/Abmelden/Neustarten ist, schließlich will ich ja nicht das Herunterfahren verhindern ;)
Ich habe es schon mit WM_QUERYENDSESSION...