HPC.ru lite - Все форумы
Форум: Программирование для КПК
Тема: Как определить время простоя системы?
Страницы: [1] 2
[Ответить]
Art123 [22.02.2007 22:45] Как определить время простоя системы?:
Каким образом можно узнать время простоя системы (WM5)?
То есть можно ли узнать в течении какого времени пользователям не производилось каких либо действий.
Заранее спасибо.
kvv@home [24.02.2007 15:17] :
Art123 писал(а):
То есть можно ли узнать в течении какого времени пользователям не производилось каких либо действий.
ставить хуки на мышь и клавиатуру отслеживать время последнего нажатия на кнопки.
или поглядеть на GetIdleTime()
Art123 [25.02.2007 14:28] :
kvv@home
В WM5 можно использовать хуки? Реализация такая же как на ББ?
GetIdleTime() - возвращает время работы системы, как его можно использовать?
mkol [25.02.2007 20:53] :
Функция GetIdleTime() возвращает время простоя процессора, но она не работает на WM5.
Art123 [25.02.2007 23:47] :
mkol
на ETEN X500 работает, по крайней мере при переодическом запуске возвращает постепенно возрастающее значание. Слышал что просто не все платформы его потдерживают.
Хотелось бы что то универсальное.
kvv@home
Любопытен вариант с хуками,пожалуйсто подскажите подробнее, в сдк про это не нашел ничего 
Вообще существует же какой то системный таймер по которому коммуникатор впадает в спячку и выключает экран.. только как бы до него добраться?
sshd [26.02.2007 01:58] :
Art123 писал(а):
Вообще существует же какой то системный таймер по которому коммуникатор впадает в спячку и выключает экран.. только как бы до него добраться?
не совсем так...... тоесть там не таймер.
и его значение похоже что не получить, только сбросить можно (через SystemIdleTimerReset - это для невыключения девайса).
kvv@home [26.02.2007 02:09] :
mkol писал(а):
Функция GetIdleTime() возвращает время простоя процессора, но она не работает на WM5.
mkol, не совсем так. Она девайсозависимая. На некоторых девайсах все же работает и под WM5/ Но вы правы, она не подходит для данной задачи.
Art123 писал(а):
Вообще существует же какой то системный таймер по которому коммуникатор впадает в спячку и выключает экран.. только как бы до него добраться?
Установить и прочитать значение таймаута можно с помощью SystemParametersInfo().
Art123 писал(а):
Любопытен вариант с хуками,пожалуйсто подскажите подробнее, в сдк про это не нашел ничего
вот тут немного про это есть:
http://www.megawap.ru/~wap/dev/ce_dev_faq.htm#10.9%20SetWindowsHookEx%20really%20does%20work,%20sort%20of.
PS
Впрочем, на счет хуков под WM5/WM6 похоже облом.
См каменты к примеру хука под wm2003
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=111354&SiteID=1
Видимо нужен другой способ. Или надо как-то переформулировать условие задачи.
Art123 [26.02.2007 10:23] :
sshd
Жаль, было бы удобно 
kvv@home
С таймаутом то понятно, узнать бы начение того с чем он сравниваеться.
Если с хуками тоже ничего не получиться видимо остаеться по таймеру смотреть положение курсора мыши (стилуса) и ассинхронно опрашивать все аппаратные кнопки 
Ещё вариант GXOpenInput но она похоже дальше себя события не пропускает, так ведь ?
sshd [26.02.2007 10:37] :
Art123 писал(а):
С таймаутом то понятно, узнать бы начение того с чем он сравниваеться
а там хитро........
есть куча event'ов, и для каждого из них есть таймаут. потом делается одна большая wait'овая функция, которая всех их ждёт с минимальным из таймаутов.
если происходит установка какого-нить из event'ов (например по функции SystemIdleTimerReset или по прикосновению к экрану), то соответствующий таймаут сбрасывается на исходное значение.
ну и потом всё по новой - снова wait.
т.е. таймера никакого нет, и ничего с ним не сравнивается.
Art123 [26.02.2007 13:28] :
sshd
Однако ...
Что же делать?
С стилусом всё понятно - через какой то промежуток времени проверяем положение - изменилось ли ..
А с аппаратными кнопками, как их лучше опрашивать? чтоб в фоне хорошо работало..
[Ответить]
[Вперед >]