Sprache: C#
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
}
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
}
Alte URL:
/snippet/windows-soll-beendet-werden/293
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
Super Snippet!
Windows 7 öffnet ein Fenster und warnt genauso wie Vista, dass mein Programm das Herunterfahren vereitelt 😀
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!
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.
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
Achja, daran habe ich noch gar nicht gedacht. Eine gute Idee.