BigBastis Blog About Me & my Digital Lifestyle

22Jul/091

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!

Be Sociable, Share!

hat dir dieser Artikel gefallen?

Dann abonniere doch diesen Blog per RSS Feed!

Kommentare (1) Trackbacks (0)
  1. Gibts das auch fertig kompiliert?


Leave a comment

(required)

Noch keine Trackbacks.

Get Adobe Flash player