Wie kann ein Konsolenprogramm, d.h. dessen Source-Code in C/C++ kontrolliert beendet werden, wenn der User z.B. das Fenster schließen will, d.h. auf [x] oben rechts im Fensterrahmen klickt oder Windows herunterfährt?
Ich habe in mein Prg. zwar eine entspr. Reaktion auf CTRL-C einbauen können, aber das scheint mit für obiges nicht auszureichen.
Wenn ich jezt das System herunterfahre, muss ich das Prg. sozusagen immer abschießen... Nicht gerade schön...
Vielen Dank für evtl. Tipps...
Mdl
Programmieren - alles kontrollieren 4.938 Themen, 20.667 Beiträge
Dafür benutze ich den C++Builder 6. Es muss nämlich auch unter früheren Windows-Versionen laufen...
Wenn Du aber eine Idee für VC++ hast, ist die vielleicht anwendbar...
Ein Handle auf das eigene Window zu ermittlen, dürfte eigentlich machbar sein. Mein Prg. ist ein Konsolenprogramm, aber kein reines DOS-Programm, d.h. ich kann die WindowsAPI auch nutzen.
Vielleicht kurz zur Erläuterung: Das Prg. rechnet ein paar Sekunden, dann wartet es ein paar Minuten (Sleep()) und das permanent.
Bei dem kontrollierten CTRL-C Abbruch habe ich die Funktion
signal(SIGINT, ctrlc_handling);
verwendet, die dafür sorgt, dass
die Fkt. ctrlc_handling()
automatisch angesprungen wird, sobald CTRL-C (oder ähnliches) passiert. Diese setzt dann die globale Variable DoAbort auf true. An geeigneten Stellen wird diese überprüft und, falls true, das Programm sauber beendet.
Nunja, beim Klick auf [x] oder beim Herunterfahren wird diese jedenfalls nicht angesprungen.
Grüße,
Mdl
P.S.
Aber - beim Nachschauen gerade - ist mir die Idee gekommen, mal zu prüfen, ob das vielleicht bei einem Wert ungleich SiGINT funktioniert. Ich teste das am besten gleichmal....