Archive

Archive for June, 2009

Wie kriege ich mit, ob der Rechner gelockt wird?

June 24th, 2009 Bernd No comments

Ja, ja, wenn man es mal weiß, dann ist alles einfach und sonnenklar.  Ich wollte vor kurzem wissen, wie ich in einem Programm darauf reagieren kann, wenn der Computer gesperrt/gelockt wird. Das rauszufinden, hat überraschenderweise recht lange gedauert. Dabei hätte ich nur nach “SystemEvents” googeln müssen. Aber das wusste ich zu dem Zeitpunkt natürlich nicht.

Die SystemEvents Klasse aus dem Microsoft.Win32 Namespace bietet einen Sack voll Events an, um auf Systemereignisse reagieren zu können. Unter anderem gibt es ein SessionSwitch Event:

image

Mit einem kleinen Testprogramm sieht man auch sofort, dass dieses Event gefeuert wird, wenn der Computer gesperrt wird:

static void Main(string[] args)
{
    SystemEvents.SessionSwitch +=
    	(s, e) => Console.WriteLine("Event {0} received...",
                                	e.Reason);
    Console.ReadLine();
}

Ein Sperren und Entsperren ergibt folgende Ausgabe:

Event SessionLock received…

Event SessionUnlock received…

War doch gar nicht so schwer. Im realen Leben solltet ihr aber auf keinen Fall vergessen euch wieder von dem Event abzumelden. Ansonsten kann das Objekt, welches sich an dem Event angemeldet hat, nicht vom Garbage Collector abgeräumt werden.