![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сервис, подсчитывающий время бездействия ПК [D7, Win2k, WinXP]
igor666 © (2008-02-08 11:55:00)Доброго дня.
Помогите плиз с таким вопросом, нужно считать время, когда ПК простаивает без каких либо действий, например, свыше 10 минут. Решил делать в виде сервиса, есть ДЛЛ, которая проверяет последнее нажатие на клавиатуру или движение мыши. Но встречал гдето, что когда не загружен рабочий стол, то хук поставить нельзя, т.е. если пользователь вышел через ctr+alt+del или завершил сеанс но не выключил комп, все хуки снимаются.
Хотелось бы узнать как можно отследить завершение сеанса или блокировку рабочего стола, какие проблемы могут возникнуть при этом. Ну и может кто даст какой совет по данной задаче.
Заранее спасибо.
ketmar (2008-02-14 18:43:00) [1]>[26] igor666 © (2008-02-14 16:43:00)
«не то» — это у тебя в постановке задачи. или ты сам задачу не понимаешь, или постановку неверную постишь.
впрочем, в любом случае кактус твой…
---
Understanding is not required. Only obedience.
igor666 (2008-02-14 16:43:00) [2]IdleTime это не то, выше я об этом писал, вообщем ладно, закрываем тему, сам разберусь, время ещё позволяет.
ketmar (2008-02-14 16:02:00) [3]>[24] igor666 © (2008-02-14 15:14:00)
ну так тебе ответили дальше. для NT-линейки всё есть. точнее, для линейки 2x+ (пде наличествует вызов IdleTime).
---
Understanding is not required. Only obedience.
igor666 (2008-02-14 15:14:00) [4]Под любой виндой я не имел ввиду Висту, 3.11 и 95 :)
igor666 (2008-02-14 15:10:00) [5]ТЗ
Нужно считать время, когда ПК стоит без дела во включеном состоянии. Например, разрешено бездействовать 10 минут, всё что идёт свыше, нужно подсчитать и сохранить результат. Считать нужно даже если никакой пользователь не логинился или заврешил сеанс, но ПК при этом не выключил. Желательно, при сохранении результата знать чей рабочий стол загружен (если загружен), если сеансов загружено несколько, то нужно знать последний, в котором работали.
Хотелось бы, чтобы работало под любой виндой, поэтому и хотел использовать ДЛЛ, автор которой пишет что ДЛЛ работает под разными Win.
KSergey (2008-02-14 14:57:00) [6]Не совсем то, конечно, но можно сделать просто SreenSaver, который будет собственно рапортить "нихрена не работает, гад!". Главное запретить юзеру таймаут менять на запуск скрин-сайвера.
ketmar (2008-02-14 14:43:00) [7]>[19] Riply © (2008-02-14 12:51:00)
потому что человек не знает, чего хочет. я ему в течение ветки намекал, что надо чёткое ТЗ оформить — тогда и яснее станет. он не хочет, ему интересно по граблям ходить.
---
Understanding is not required. Only obedience.
igor666 (2008-02-14 13:04:00) [8]to Riply, ну сервис используется для того, чтобы если пользователь ещё не залогинился или если завершил сеанс но выключил ПК, можно было эту хоть чтото делать, ведь в таком режиме только сервисы работают. А зачем ДЛЛ с хуком, просто ф-ция GetLastInputInfo, на сколько я знаю не работает под win98, а вариант редкий, но всё же бывает и такой что ещё используют эту ОС.
Riply (2008-02-14 12:51:00) [9]Может я чего-то не поняла, но зачем вся эта катавасия с хуками, сервисами и отловами ?
Почему нельзя использовать GetLastInputInfo ?
igor666 (2008-02-14 12:13:00) [10]Народ, извеняюсь что снова поднял тему, но нужно таки разобраться с интерактивным пользователем. Например в WinXP можно сменить пользователя, не потушив рабочий стол предыдущего, вот мне надо отловить когда сменился ползователь дабы передать новые параметры сервису. С логофом и выключением системы понятно, а вот такими перемещениями между активными пользователями, не могу найти нигде информации. Может кто поможет?
igor666 (2008-02-08 15:37:00) [11]Понял, спасибо всем за помощь :)
ketmar (2008-02-08 15:33:00) [12][15] igor666 © (2008-02-08 15:08:00)
всё необходимое для решения тебе дали. дальше моск+логика. уж как отловить лочку стола я не помню, но это ты и сам найдёшь, не маленький. дальше — сервис и проложение-рапортовалка. всё.
---
Understanding is not required. Only obedience.
igor666 (2008-02-08 15:08:00) [13]Ну мне надо знать, когда за компом работают, т.е. чтото делают, а когда он просто включён, но ничего на нём не делается и если время бездействия превышает например 10 минут, то надо считать это превышение. А простой то может быть и в сеансе пользователя, может заблокировать стол, а может выйти из сеанса и машина будет стоять в таком режиме.
Игорь Шевченко (2008-02-08 14:56:00) [14]
> Помогите плиз с таким вопросом, нужно считать время, когда
> ПК простаивает без каких либо действий, например, свыше
> 10 минут.
Ты точно уверен, что простаивает именно ПК ?
Может, тебе надо знать, что простаивает сеанс интерактивного пользователя ? Это разные вещи, вообще-то
ketmar (2008-02-08 14:50:00) [15]>[12] igor666 © (2008-02-08 14:46:00)
сервис как раз работает. на то он и сервис.
для логофа ловить WM_LOGOFF. иже с ней есть WM_REBOOT, WM_SHUTDOWN.
посчитать можно. как раз сервис отлично узнает, когда магину выключили. а когда был логоф — об этом ему расскажет клиентская программа.
---
Understanding is not required. Only obedience.
igor666 (2008-02-08 14:46:00) [16]А, так если сеанс завершить сервис тоже не работает, понял, спасиб за информашку, никогда с такими задачами не сталкивался, поэтому не знал. А не подскажете какие сообщения надо отлавливать, чтобы поймать момент завершения сеанса или блокировки рабочего стола? И можно ли както посчитать время, когда сеанс завершили, но комп не выключили?
ketmar (2008-02-08 14:19:00) [17]>[10] igor666 © (2008-02-08 13:57:00)
покажи мне продуктивную работу в диалоге logon.
---
Understanding is not required. Only obedience.
igor666 (2008-02-08 13:57:00) [18]Может я чегото не понял, но если завершили сеанс пользователя, программа то тоже вылетит, а сервис по идее должен работать. Так что проблема с завершением сеанса по моему хоть так хоть так будет.
ketmar (2008-02-08 13:45:00) [19]>[8] igor666 © (2008-02-08 13:43:00)
блин. уж сколько раз твердили миру, что не должен сервис знать о клавиатуре, мыши, окнах и прочей ерунде. "подсчитывает" клиентская программа. и сообщает сервису.
---
Understanding is not required. Only obedience.
igor666 (2008-02-08 13:43:00) [20]Сервис, подсчитывающий время бездействия ПК