Samstag, 6. November 2010

C# erkennen ob System heruntergefahren wird

Eine häufig durchgeführte Suchanfrage, bei welcher Surfer auf diesem Blog landeten, war die Frage, wie man feststellen kann, ob der PC gerade heruntergefahren wird.
Deswegen gibt es die Lösung jetzt hier als Post (warum siehe hier).
Wird das System heruntergefahren, werden logischerweise alle laufenden Prorgamme beendet. Das können wir ausnutzen, in dem wir in der Methode FormClosing() des Hauptformulars, welche aufgerufen wird, wenn das Formular geschlossen wird, den Grund des Schließens abfragen.
Dieser kann über die Eigenschaft CloseReason des Parameters e ermittelt werden.
Im Falle des Herunterfahrens lautet dieser Grund CloseReason.WindowsShutDown.
Der folgende Codeausschnitt aus einer Windows Forms-Anwendung implementiert diese Möglichkeit und gibt eine Meldung aus, wenn der PC heruntergefahren wird:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.WindowsShutDown)
        MessageBox.Show("PC wird heruntergefahren.");
}

Die Verwendung des Ereignisses Microsoft.Win32.SystemEvents.SessionEnding, welches nur eintritt wenn der PC heruntergefahren wird, wird im nächsten Post kurz erwähnt.

Keine Kommentare:

Kommentar veröffentlichen