Standby und Ruhezustand mit C#

by Bernhard Wurm 29. September 2010 13:15

Wie schickt man mit einem Programm den Computer in den Standy-Modus oder in den Ruhezustand, was auf englisch übrigends Hibernate heißt und Winterschlaf bedeutet?

Mit folgendem Code:

Application.SetSuspendState(PowerState.Suspend, true, false);
bzw.
Application.SetSuspendState(PowerState.Hibernate, true, false);

Doch meist ist nicht spannend, wie man den Computer dort hin schickt, sondern wie man in der Anwendung merkt, dass der Computer in Standby bzw in den Ruhezustand geschickt wird.
Hierzu existiert unter Microsoft.Win32 die Klasse SystemEvents mit einem Eventhandler:

SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);
void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e) {
    switch(e.Mode) {
        case PowerModes.Suspend:
            Console.WriteLine("Good Bye. Standby oder Hibernate.");
            break;
        case PowerModes.Resume:
            Console.WriteLine("I'm back!");
            break;
        case PowerModes.StatusChange:
            Console.WriteLine("Do you have a weak battery?");
            break;
        default:
            Console.WriteLine("How the hell did you do that?");
            break;
    }
}

StatusChanged wird ausgelöst wenn vom Betriebssystem eine Statusänderung, wie beispielsweise eine Batteriewarnung auftritt. – Detailinfo hier.

Also alles einfacher als gedacht!

Categories: API