Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Konsolenanwendung sauber beenden? (https://www.delphipraxis.net/128345-konsolenanwendung-sauber-beenden.html)

Cyberstorm 28. Jan 2009 10:23


Konsolenanwendung sauber beenden?
 
ich suche gerade nach einer möglichkeit in meiner konsolenanwendung
nach drücken von strg + c bzw. schließen des fensters meine shutdown
routine noch abzuarbeiten.

hab im netz nichts gefunden. hat da jemand eine lösung?

Muetze1 28. Jan 2009 11:00

Re: Konsolenanwendung sauber beenden?
 
Ja. Zum einen kannst du einstellen, dass du CTRL-C als Eingabe einlesen möchtest und dann kannst du es dort entsprechend handhaben. Siehe dazu SetConsoleMode() mit dem Flag ENABLE_PROCESSED_INPUT. Das Einlesen der Eingaben (u.a. des Ctrl-C) musst du dann in einem Thread nebenbei realisieren und synchronisiert in deinen Consolencode einspeisen. Hintergrund dabei ist einfach nur, dass die nötige Funktion ReadConsoleInput() blockierend arbeitet.

Apollonius 28. Jan 2009 17:02

Re: Konsolenanwendung sauber beenden?
 
Ich würde lieber MSDN-Library durchsuchenSetConsoleCtrlHandler verwenden.

Muetze1 28. Jan 2009 17:40

Re: Konsolenanwendung sauber beenden?
 
Wenn deine App auf diesen aber nicht schnell genug reagiert, dann kommt recht schnell der "Beenden oder abschießen" Dialog von Windows...

Apollonius 28. Jan 2009 17:47

Re: Konsolenanwendung sauber beenden?
 
Sonst gibt es aber keine Möglichkeit, auf das normale Schließen des Fensters zu reagieren, wie gewünscht. Außerdem halte ich es für einen recht großen Aufwand, mit einem Hintergrundthread ständig zu lesen und die Daten dann an den Hauptthread zu übertragen.

Muetze1 28. Jan 2009 18:53

Re: Konsolenanwendung sauber beenden?
 
Das ist schnell gemacht und kein Aufwand. Selbst wenn, ist es mit dem Lesen kein Problem, zumindest drängelt dann nicht Windows zum beenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 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