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