Как подсчитать время входа пользователей Windows (VC ++) - PullRequest
0 голосов
/ 14 апреля 2011

Я пишу службу Windows для выполнения родительского контроля (Visual C ++).

У меня возникают проблемы со следующим:

  • как подсчитать время, когда пользователь Windows вошел в системусегодня (время измеряется в часах)
  • как вызвать выход из учетной записи Windows пользователя, если время в день превышает указанное значение, скажем, 5 часов.

Любая помощь приветствуется.
С уважением!

1 Ответ

0 голосов
/ 15 апреля 2011

Я думаю, что для этого есть несколько способов.
Я думаю, что самым простым является использование таймера, который может быть запущен при запуске службы (или когда ваше приложение запускается, если помещено в меню запуска).
Для этого вы можете использовать метод SetTimer, связанный с сообщением WM_TIMER:
http://msdn.microsoft.com/en-us/library/ms644906(v=vs.85).aspx

Вы должны получить время до запуска таймера, используя функцию CTime, например:

CTime t;
t.GetCurrentTime ();
timeAtLaunched=t.GetSecond(); //or GetHour()

После этого вы можете сделать аналогичный вызов CTime внутри функции таймера, чтобы получить значение currentTime и рассчитать разницу между значением currentTime и значением timeAtLaunched

Чтобы сохранить время соединения в течение дня, если пользователь подключается и отключается несколько раз, вы должны сохранить значение разницы в файле или в реестре.

Для принудительного выхода из системы вы можете использовать:

ExitWindowsEx (EWX_SHUTDOWN | EWX_FORCE, SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
  SHTDN_REASON_MINOR_UPGRADE | SHTDN_REASON_FLAG_PLANNED)
...