VB: Windows Herunterfahren verhindern
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 Sub
Wenn 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 Sub
Die 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!

März 23rd, 2010
Gibts das auch fertig kompiliert?