# Schliessen der Konsolenanwendung durch User verhindern



## Oikalyptuzz (5. Januar 2010)

Hallo,
ich bin neu hier und auch auf dem Gebiet programmieren ein rechter Frischling.
Ich schreibe grade ein Programm das beim Login geladen wird und in das Nutzereingaben reinkommen (Name, Klasse; Verwendung) Das habe ich alles schon realisiert. Jetzt möchte ich natürlich verhindern das jemand einfach per Klick auf das kleine Kreuzchen die Anwendung beendet ohne eine Eingabe gemacht zu haben.
Kann  mir jemand für einen Anfänger verständlich erklären wie ich das realisiere? Achso ich benutze den CppTrainer unter Windows XP.
Vielen Dank im Vorraus.

Gruss,
David

PS: Im Anhang mal mein Source von dem Programm


----------



## ComFreek (5. Januar 2010)

Hallo,

startet dein Programm, wenn man sich angemeldet hat?

Ich habe noch die von Ereignisabfragen bei Konsolenanwendungen gehört, wie z.B.: WM_CLOSE
Vielleicht könnte man _windows.h_ (damit kann man richtige Win-Anwendungen machen) einbinden und eine Ereignisabfrage durchführen.
Dafür bräuchte man ein HWND-Handle (Verweis auf dieses Fenster), das man aber mit _FindWindow_ rausbekommen kann.

Ich glaube nicht, dass das funktionieren wird, aber vielleicht hat es ja jemand anderes schon mal gemacht!?
Außerdem könnte man mit dem TaskManager oder anderen Programmen den Prozess sowieso beenden. (Aber wieso geht das nicht bei Antiviren-Programmen? )
Ich habe auch mal ein LoginSkript gemacht. Es hat beim Start ein Befehl gegeben zum Herunterfahren in 15 Sekunden.
Und nur wenn man das Passwort eingibt, schickt das Programm den Befehl das Herunterfahren abbzubrechen:


```
system("shutdown /f /s /t 15");  // Fahre herunter, egal ob Programme offen sind, in 15 Sek.
// PASSWORT ABFRAGEN....
system("shutdown /a");  // Herunterfahren abbrechen
```

Jetzt ist egal, ob das Fenster geschlossen wird, der Befehl zum Herunterfahren bleibt da und wird ausgeführt!


----------



## Oikalyptuzz (5. Januar 2010)

Ich hab mir auch überlegt eine Schleife mit einem 2ten Programm draus zu machen,
soll heissen Anw1 ist mein Loginscript und Anw2 kontrolliert ob das Script immer noch läuft und wenn es beendet wird soll es wieder neu gestartet werden...
vllt ist das bessert. Achso über den TaskManager beenden wäre nicht das Problem das Script kommt auf Computern zum Einsatz wo User mit sehr niedrigen Pc Kenntnissen sitzen. Wie gesagt ich möchte nur das kleine Kreuzchen ausser gefecht setzten.

Gruss,
David


----------



## Oikalyptuzz (5. Januar 2010)

Kennt sich denn keiner damit aus?


----------



## deepthroat (5. Januar 2010)

Hi.

Schau mal hier: http://www.daniweb.com/forums/thread181116.html#

Gruß


----------



## ComFreek (6. Januar 2010)

Also genau wie ich vermutet hatte 



> Achso über den TaskManager beenden wäre nicht das Problem das Script kommt auf Computern zum Einsatz wo User mit sehr niedrigen Pc Kenntnissen sitzen.



Gut, aber man könnte noch das Programm minimieren. Hier ist ein Thema darüber, wie man ein Programm immer im Vordergrund halten kann: Click!

Maximieren einer Konsolenanwendung geht auch, es war neulich ein Thema darüber. Benutz mal die Suchfunktion.


----------



## Oikalyptuzz (6. Januar 2010)

Vielen Dank für eure Zahlreichen Antworten.
Werde mich nach dem Mittag erstmal durchforsten

Gruss,
David


----------



## Oikalyptuzz (8. Januar 2010)

Sooo also ich habe das Problem jetzt anderweitig beseitigt, undzwar mit einem nebenherlaufenden batch script das immer wieder eine prozessabfrage nach dem laufenden programm startet und wenn dieses nicht vorhanden ist wird es erneut gestartet.


----------

