Как определить команду "Блокировать этот компьютер" из приложения WPF?
Предпочел бы ответ в C#, .Net 3.5 с использованием WPF (Windows Forms тоже хорошо)
У меня есть приложение, которое по сути является окном панели инструментов или значком в трее. Он должен определить, блокирует ли пользователь свою рабочую станцию и уходит ли он, чтобы обновить статус человека в централизованной системе.
Я могу достаточно легко обнаружить переключение сеанса или выход из системы, используя SystemEvents, но я не могу понять, как обнаружить или получить событие при блокировке.
Спасибо за любую помощь.
3 ответа
Когда вы обрабатываете Microsoft.Win32.SystemEvents.SessionSwitch
событие (которое кажется, что вы уже делаете, чтобы обнаружить выход), проверьте, если Reason
является 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;
// ...
}
}
Вот что-то из CodeProject.
http://www.codeproject.com/KB/vb/DetectWindowslockunlock.aspx