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

Comments

Yachtcharter Griechenland Greece on 10/26/2010 9:18:25 AM

This is such a great resource that you are providing and you give it away for free. I love seeing websites that understand the value of providing a quality resource for free.

David Germany on 1/18/2011 10:52:57 AM

Bei mir scheint der Eventhandler PowerModeChanged nicht verfügbar zu sein. Ich bekomme in Visual C# 2008 immer die Fehlermeldungen: "Ungültiges Token "+=" in Klasse, Struktur oder Schnittstellenmemberdeklaration." und "Die Methode muss einen Rückgabetyp besitzen." und "Bezeichner erwartet."

David Germany on 1/18/2011 10:53:27 AM

Bei mir scheint der Eventhandler PowerModeChanged nicht verfügbar zu sein. Ich bekomme in Visual C# 2008 immer die Fehlermeldungen: "Ungültiges Token "+=" in Klasse, Struktur oder Schnittstellenmemberdeklaration." und "Die Methode muss einen Rückgabetyp besitzen." und "Bezeichner erwartet."

David Germany on 1/18/2011 10:53:40 AM

Bei mir scheint der Eventhandler PowerModeChanged nicht verfügbar zu sein. Ich bekomme in Visual C# 2008 immer die Fehlermeldungen: "Ungültiges Token "+=" in Klasse, Struktur oder Schnittstellenmemberdeklaration." und "Die Methode muss einen Rückgabetyp besitzen." und "Bezeichner erwartet."

David Germany on 1/18/2011 10:53:55 AM

Bei mir scheint der Eventhandler PowerModeChanged nicht verfügbar zu sein. Ich bekomme in Visual C# 2008 immer die Fehlermeldungen: "Ungültiges Token "+=" in Klasse, Struktur oder Schnittstellenmemberdeklaration." und "Die Methode muss einen Rückgabetyp besitzen." und "Bezeichner erwartet."

Bernhard Wurm Austria on 1/18/2011 2:17:43 PM

Hallo David.
Dieser ist im Namespace Microsoft.Win32 im Assembly System.dll (Siehe: msdn.microsoft.com/.../...owermodes(v=VS.90).aspx)

Add comment




  Country flag

biuquote
  • Comment
  • Preview
Loading