Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I detect a Lock This Computer command from a WPF application?

Tags:

Would prefer an answer in C#, .Net 3.5 using WPF (Windows Forms also okay)

I have an application that is essentially a toolbar window or tray icon. It needs to detect if a user locks his/her workstation and walks away in order to update the person's status in a centralized system.

I can detect a session switch or a logout easily enough, using the SystemEvents, but I cannot for the life of me figure out how to detect or receive an event on Lock.

Thanks for any assistance.

like image 378
Grady Werner Avatar asked Mar 16 '09 23:03

Grady Werner


1 Answers

When you handle the Microsoft.Win32.SystemEvents.SessionSwitch event (which it sounds like you're already doing to detect logout), check to see if the Reason is SessionSwitchReason.SessionLock:

 using Microsoft.Win32;
 // ...
 // Somewhere in your startup, add your event handler:
    SystemEvents.SessionSwitch += 
       new SessionSwitchEventHandler(SystemEvents_SessionSwitch);
 // ...

 void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
 {
     switch(e.Reason)
     {
         // ...
         case SessionSwitchReason.SessionLock:
            // Do whatever you need to do for a lock
            // ...
         break;
         case SessionSwitchReason.SessionUnlock:
            // Do whatever you need to do for an unlock
            // ...
         break;
         // ...
     }
 }
like image 190
Daniel LeCheminant Avatar answered Sep 19 '22 22:09

Daniel LeCheminant