Reputation: 459
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.
Upvotes: 21
Views: 10633
Reputation: 51071
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;
// ...
}
}
Upvotes: 46
Reputation: 190935
Here is something from CodeProject.
http://www.codeproject.com/KB/vb/DetectWindowslockunlock.aspx
Upvotes: 1