HPC.ru lite - Все форумы
Форум: Программирование для КПК
Тема: Как определить время простоя системы?
Страницы: [1] 2

[Ответить]
Art123 [22.02.2007 22:45] Как определить время простоя системы?:
Каким образом можно узнать время простоя системы (WM5)?
То есть можно ли узнать в течении какого времени пользователям не производилось каких либо действий.

Заранее спасибо.
kvv@home [24.02.2007 15:17] :
ставить хуки на мышь и клавиатуру отслеживать время последнего нажатия на кнопки.
или поглядеть на 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] :
не совсем так...... тоесть там не таймер.
и его значение похоже что не получить, только сбросить можно (через SystemIdleTimerReset - это для невыключения девайса).
kvv@home [26.02.2007 02:09] :
mkol, не совсем так. Она девайсозависимая. На некоторых девайсах все же работает и под WM5/ Но вы правы, она не подходит для данной задачи.

Установить и прочитать значение таймаута можно с помощью SystemParametersInfo().

вот тут немного про это есть:
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] :
а там хитро........
есть куча event'ов, и для каждого из них есть таймаут. потом делается одна большая wait'овая функция, которая всех их ждёт с минимальным из таймаутов.
если происходит установка какого-нить из event'ов (например по функции SystemIdleTimerReset или по прикосновению к экрану), то соответствующий таймаут сбрасывается на исходное значение.
ну и потом всё по новой - снова wait.
т.е. таймера никакого нет, и ничего с ним не сравнивается.
Art123 [26.02.2007 13:28] :
sshd

Однако ...

Что же делать?

С стилусом всё понятно - через какой то промежуток времени проверяем положение - изменилось ли ..

А с аппаратными кнопками, как их лучше опрашивать? чтоб в фоне хорошо работало..
[Ответить]
[Вперед >]