Feedback

C# - Windows soll beendet werden

Veröffentlicht von am 03.11.2006
(9 Bewertungen)
Es kann ja mal passieren das ein User den Rechner runterfahren will, aber die Daten vom Programm noch nicht gespeichert wurden. Dann kann euch dieses Snippet helfen
Microsoft.Win32.SystemEvents.SessionEnding += new Microsoft.Win32.SessionEndingEventHandler (this.WinShutdown);

private void WinShutdown(object sender, Microsoft.Win32.SessionEndingEventArgs e)
{
 //und hier der Code zum speichern oder sonst was
 // mit e.Cancel = true; könnte man den shutdown sogar unterbinden
}
Abgelegt unter Shutdown, Windows beenden, speichern.

4 Kommentare zum Snippet

Macximilian schrieb am 03.05.2008:
Wenn ich unter Vista "e.Cancel = true" setze, erscheint ein Warnungsbildschirm vom Betriebsystem, dass mein Programm das Herunterfahren verhindert. Wie sieht das ganze eigentlich unter XP aus? Kann mir das mal jemand sagen?
Thx,
Macximilian
regalis schrieb am 13.03.2010:
Super Snippet!
Windows 7 öffnet ein Fenster und warnt genauso wie Vista, dass mein Programm das Herunterfahren vereitelt :D
Man kann aber ein Herunterfahren erzwingen.
Unter XP kann ich es leider nicht testen.
Fazit sehr nützlich um seine geöffneten Files zu speichern!
...lypô schrieb am 23.11.2018:
Kann man das nicht einfach im FormClosing-Event machen?
Message- oder DialogBox: "Sollen die Daten gespeichert werden?".
Win8 fährt jedenfalls dann nicht herunter, es sei denn, man erwzingt es.
Koopakiller schrieb am 27.11.2018:
Diese Lösung hier sollte auch bei Nicht-GUI-Anwendungen funktionieren. Wenn man das Beenden der Anwendung je nach Grund anders regeln möchte kann das Snippet hier auch praktisch sein.
Wobei ich auch noch darauf hinweisen möchte, dass beispielsweise das Form.FormClosing Event [1] als Parameter e.CloseReason [2] mitbekommt wodurch man den Grund ebenfalls feststellen kann.

[1] https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.form.formclosing?view=netframework-4.7.2
[2] https://docs.microsoft.com/de-de/dotnet/api/system.windows.forms.closereason?view=netframework-4.7.2
 

Logge dich ein, um hier zu kommentieren!