Windows-Ende - nicht erkannt im OnClose
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Windows-Ende - nicht erkannt im OnClose
In meinem Programm sollen, wenn es beendet wird, alle im Hauptspeicher gesammelten Daten in eine Datei gespeichert werden.
Dazu nutze ich das Ereignis OnClose.
Das funktioniert auch bei einem normalen Ende (=Schliessen) des Programms.
ABER: es funktioniert nicht, wenn Windows beendet wird.
Anscheinend benötige ich da noch ein anderes Ereignis. Welches ?
Dazu nutze ich das Ereignis OnClose.
Das funktioniert auch bei einem normalen Ende (=Schliessen) des Programms.
ABER: es funktioniert nicht, wenn Windows beendet wird.
Anscheinend benötige ich da noch ein anderes Ereignis. Welches ?
- Niesi
- Lazarusforum e. V.
- Beiträge: 587
- Registriert: So 26. Jun 2016, 19:44
- OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
- Kontaktdaten:
Re: Windows-Ende - nicht erkannt im OnClose
Sieh Dir mal bitte "Application.OnEndSession" an, das könnte helfen.
Gruß
Harald
Gruß
Harald
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: Windows-Ende - nicht erkannt im OnClose
Darauf würde ich mich aber nicht verlassen. Windows gibt einem Programm beim Herunterfahren oder Neustart nur kurz Zeit, und wenn es nicht reagiert, wird es abgeschossen. Dabei können Deine Daten unleserlich werden.
-
- Beiträge: 582
- Registriert: Sa 22. Okt 2016, 23:12
- OS, Lazarus, FPC: W10, L 3.8
- CPU-Target: 32+64bit
- Wohnort: Dresden
Re: Windows-Ende - nicht erkannt im OnClose
Mit WM_QUERYENDSESSION, WM_ENDSESSION und ShutdownBlockReasonCreate sollte es möglich sein, soweit ich verstanden habe.
https://docs.microsoft.com/en-us/window ... endsession
https://docs.microsoft.com/en-us/window ... endsession
https://docs.microsoft.com/en-us/window ... asoncreate
ich weis aber nicht wie.
Hier gibts auch was dazu: https://forum.lazarus.freepascal.org/in ... #msg285272
und hier: viewtopic.php?f=55&t=8269&p=73150&hilit ... ION#p73150
https://docs.microsoft.com/en-us/window ... endsession
https://docs.microsoft.com/en-us/window ... endsession
https://docs.microsoft.com/en-us/window ... asoncreate
ich weis aber nicht wie.
Hier gibts auch was dazu: https://forum.lazarus.freepascal.org/in ... #msg285272
und hier: viewtopic.php?f=55&t=8269&p=73150&hilit ... ION#p73150
LG Maik
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
Windows 10,
- Lazarus 3.8 (stable) + fpc 3.2.2 (stable)
- Lazarus 4.99 (trunk) + fpc 3.3.1 (main/trunk)
-
- Beiträge: 2118
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Windows-Ende - nicht erkannt im OnClose
Drauf verlassen das du eine Meldung bekommst würde ich mich sowieso nicht (Windows kann dein Programm einfach so killen wenn der User ungeduldig ist)
Verwende doch lieber einen Timer und schreib alle Minute de Dateien, so kannst du immer Sicherheit das zumindest halbwegs aktuelle Daten gespeichert werden
Verwende doch lieber einen Timer und schreib alle Minute de Dateien, so kannst du immer Sicherheit das zumindest halbwegs aktuelle Daten gespeichert werden
- Niesi
- Lazarusforum e. V.
- Beiträge: 587
- Registriert: So 26. Jun 2016, 19:44
- OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
- Kontaktdaten:
Re: Windows-Ende - nicht erkannt im OnClose
Warf hat geschrieben:Drauf verlassen das du eine Meldung bekommst würde ich mich sowieso nicht (Windows kann dein Programm einfach so killen wenn der User ungeduldig ist)
Verwende doch lieber einen Timer und schreib alle Minute de Dateien, so kannst du immer Sicherheit das zumindest halbwegs aktuelle Daten gespeichert werden
Das ist prinzipiell korrekt - aber User können auch den Stecker ziehen, den Akku raushebeln usw..
GANZ sicher wird's nie - daher sollten die vorgesehenen Funktionen schon benutzt werden.
Per Timer alle soundsoviel Sekunden / Minuten Sicherungen anlegen kann bei größeren Datenmengen sehr lästig sein ...
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...
-
- Beiträge: 2118
- Registriert: Di 23. Sep 2014, 17:46
- OS, Lazarus, FPC: Win10 | Linux
- CPU-Target: x86_64
Re: Windows-Ende - nicht erkannt im OnClose
Klar, kommt aber auch immer auf die Maschine an. Mit einer SSD sollte man (wenn man in einem separaten Thread schreibt) praktisch nix bemerken, auf einer HDD (oder noch schlimmer auf einem Raspberry Pi mit SD karte) kann das aber das ganze system aufhängenNiesi hat geschrieben:Das ist prinzipiell korrekt - aber User können auch den Stecker ziehen, den Akku raushebeln usw..
GANZ sicher wird's nie - daher sollten die vorgesehenen Funktionen schon benutzt werden.
Per Timer alle soundsoviel Sekunden / Minuten Sicherungen anlegen kann bei größeren Datenmengen sehr lästig sein ...
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: Windows-Ende - nicht erkannt im OnClose
Meine Frage zielte wirklich nur darauf ab: wie bekomme ich die normale Windows-Meldung beim normalen Shutdown mit. Denn die führt zu keinem OnClose-Ereignis.
Die Antwort von sstvmaster hat mir nun weitergeholfen.
Dankeschön.
Die Antwort von sstvmaster hat mir nun weitergeholfen.
Dankeschön.
-
- Lazarusforum e. V.
- Beiträge: 999
- Registriert: Do 17. Apr 2008, 01:59
- OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
- CPU-Target: Intel i7-10750 64Bit
- Wohnort: Freiburg
Re: Windows-Ende - nicht erkannt im OnClose
.. und was davon?malabarista hat geschrieben: Die Antwort von sstvmaster hat mir nun weitergeholfen.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: Windows-Ende - nicht erkannt im OnClose
der erste Link.
Es kommt zuerst ein endquerysession und dann ein endsession.
Und so kann ich beim endquerysession meine Speicherung machen.
Es kommt zuerst ein endquerysession und dann ein endsession.
Und so kann ich beim endquerysession meine Speicherung machen.
-
- Beiträge: 1224
- Registriert: So 20. Mär 2016, 22:14
- OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
- CPU-Target: Raspberry Pi 3
Re: Windows-Ende - nicht erkannt im OnClose
Ich kann das grad nicht testen: Funktioniert das EndQuerySession auch unter Linux? Also bekomme ich so eine Meldung bei einem Shutdown oder Reboot? Und auch bei einem Konsolenprogramm?
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: Windows-Ende - nicht erkannt im OnClose
Weiss ich nicht.
Dieses Projekt ist nur für Windows, und deswegen arbeite ich sehr windowsbezogen, - nicht plattformübergeifend.
Dieses Projekt ist nur für Windows, und deswegen arbeite ich sehr windowsbezogen, - nicht plattformübergeifend.