.NET
VB: Windows Herunterfahren verhindern
Posted on .Wer eine einfache Möglichkeit sucht mit wenig Code zu verhindern, dass ein Benutzer Windows herunterfährt für den habe ich hier etwas.
Eigentlich ist es eher ein Programmier-Fehler, wenn die eigene Anwendung verhindert, dass Windows herunterfahren kann. Aber wer weis, vielleicht kann das auch mal nützlich sein!
Das Vorgehen hier ist relativ simpel. Alles was man tun muss ist zu verhindern, dass euer Hauptfenster des Programms, dessen Schließung zum Beenden des Programms führt geschlossen wird.
Das Schließen des Fensters kann man in dem „FormClosing“-Event abfangen etwa so:
Private Sub frmMain_FormClosing(ByVal sender As Object, _ ByVal e As System.Windows.Forms.FormClosingEventArgs) _ Handles Me.FormClosing e.Cancel = True Me.Hide() End SubWenn das Formular nun geschlossen wird fangen wir das ab und beenden dieses Vorgehen. Im Anschluss wird noch das eigene Formular versteckt.
Der Prozess läuft in diesem Fall natürlich weiter und kann in diesem Fall nurnoch über den Taskmanager geschlossen werden!
Windows kann nun auch nicht runterfahren, da das Programm es aus der Bahn wirft! Andere Programme werden natürlich geschlossen. Aber Herunterfahren sollte der Rechner nicht!
Nun stellt sich dich die Frage, was ist wenn ich diese Funktion (Form verstecken statt schließen) nutzen will aber trotzdem will, dass Windows normal herunterfahren kann und mein Programm beendet?
Wenn ihr diesen Code in eurem Programm nutzen wollt, aber nciht wollt dass Windows sich an eurem Programm aufhängt müsst Ihr noch eine Abfrage einbauen, die prüft wer das Fenster eigentlich schließen will:
Private Sub frmMain_FormClosing(ByVal sender As Object, _ ByVal e As System.Windows.Forms.FormClosingEventArgs) _ Handles Me.FormClosing If Not e.CloseReason = CloseReason.WindowsShutDown Then e.Cancel = True Me.Hide() End If End SubDie Abfrage der Funktion CloseReason liefert den Grund für das schließen des Fensters. Wenn der Grund „WindowsShutDown“ ist soll der Schließen-Vorgang nicht unterbrochen werden, damit Windows herunterfahren kann.
Alle Anderen Gründe werden abgefangen und das Fenster nur versteckt!
Sebastian Gross
http://www.bigbasti.comSebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.
Author tegon
Posted at 21:20 23. März 2010.
Gibts das auch fertig kompiliert?