AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Konsolenanwendung sauber beenden?
Thema durchsuchen
Ansicht
Themen-Optionen

Konsolenanwendung sauber beenden?

Ein Thema von Cyberstorm · begonnen am 28. Jan 2009 · letzter Beitrag vom 28. Jan 2009
Antwort Antwort
Cyberstorm

Registriert seit: 23. Okt 2003
159 Beiträge
 
Delphi 2010 Architect
 
#1

Konsolenanwendung sauber beenden?

  Alt 28. Jan 2009, 11:23
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?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Konsolenanwendung sauber beenden?

  Alt 28. Jan 2009, 12:00
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.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Konsolenanwendung sauber beenden?

  Alt 28. Jan 2009, 18:02
Ich würde lieber MSDN-Library durchsuchenSetConsoleCtrlHandler verwenden.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Konsolenanwendung sauber beenden?

  Alt 28. Jan 2009, 18:40
Wenn deine App auf diesen aber nicht schnell genug reagiert, dann kommt recht schnell der "Beenden oder abschießen" Dialog von Windows...
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Konsolenanwendung sauber beenden?

  Alt 28. Jan 2009, 18:47
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Konsolenanwendung sauber beenden?

  Alt 28. Jan 2009, 19:53
Das ist schnell gemacht und kein Aufwand. Selbst wenn, ist es mit dem Lesen kein Problem, zumindest drängelt dann nicht Windows zum beenden.
  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 06:33 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