BigBastis Blog

VB: Windows Herunterfahren verhindern

Introduction

user

Sebastian Gross

Sebastian 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.


LATEST POSTS

Handling too long scrollspy menus 10th June, 2015

Java: Create ZIP archive 23rd March, 2015

.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 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!

profile

Sebastian Gross

http://www.bigbasti.com

Sebastian 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.

Comments
user

Author tegon

Posted at 21:20 23. März 2010.

Gibts das auch fertig kompiliert?

Kommentar verfassen

View Comments (1) ...
Navigation