Представьте, что я создаю приложение, которое измеряет, как долго определенный пользователь находится на компьютере (фактическое приложение, которое я пишу, отличается, но это не имеет значения).
Мне нужно отслеживать, когда пользователь входит в систему, выходит из системы, когда он приостанавливает работу компьютера (выбор режима ожидания в меню «Выключение») и когда компьютер выходит из спящего режима.
Я использую SystemEvents
(в частности, PowerModeChanged
и SessionSwitch
events) для этого, и в основном это работает, за одним исключением:
Когда компьютер приостановлен, событие PowerModeChanged
корректно возникает с режимом Suspend
.
Когда компьютер возобновляет работу, PowerModeChanged
поднимается с режимом Resume
. Все идет нормально.
Сразу после этого возникает событие SessionSwitch
с причиной SessionLock
. Но когда я в конце концов захожу после возобновления, SessionUnlock
нет.
Это происходит в Windows XP, и мне нужно, чтобы это работало правильно в XP, Vista и 7.
Есть ли способ получить этот анлок?