Как определить время простоя системы?

Средства разработки, технические вопросы, отвечает (по мере сил) Отдел Разработок
Закрыто
Art123
Новенький (0 lvl)
Сообщения: 6
Зарегистрирован: Чт фев 22, 2007 22:34

Как определить время простоя системы?

Сообщение Art123 » Чт фев 22, 2007 22:45

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

Заранее спасибо.

kvv@home
Студент (1 lvl)
Сообщения: 44
Зарегистрирован: Чт янв 11, 2007 23:30

Сообщение kvv@home » Сб фев 24, 2007 15:17

Art123 писал(а):То есть можно ли узнать в течении какого времени пользователям не производилось каких либо действий.
ставить хуки на мышь и клавиатуру отслеживать время последнего нажатия на кнопки.
или поглядеть на GetIdleTime()
kvv

Art123
Новенький (0 lvl)
Сообщения: 6
Зарегистрирован: Чт фев 22, 2007 22:34

Сообщение Art123 » Вс фев 25, 2007 14:28

kvv@home
В WM5 можно использовать хуки? Реализация такая же как на ББ?

GetIdleTime() - возвращает время работы системы, как его можно использовать?

mkol
Академик (6 lvl)
Сообщения: 1189
Зарегистрирован: Вс апр 11, 2004 12:14

Сообщение mkol » Вс фев 25, 2007 20:53

Функция GetIdleTime() возвращает время простоя процессора, но она не работает на WM5.

Art123
Новенький (0 lvl)
Сообщения: 6
Зарегистрирован: Чт фев 22, 2007 22:34

Сообщение Art123 » Вс фев 25, 2007 23:47

mkol
на ETEN X500 работает, по крайней мере при переодическом запуске возвращает постепенно возрастающее значание. Слышал что просто не все платформы его потдерживают.
Хотелось бы что то универсальное.

kvv@home
Любопытен вариант с хуками,пожалуйсто подскажите подробнее, в сдк про это не нашел ничего :(

Вообще существует же какой то системный таймер по которому коммуникатор впадает в спячку и выключает экран.. только как бы до него добраться?

sshd
Нобелевский лауреат (7 lvl)
Сообщения: 2159
Зарегистрирован: Вс мар 19, 2006 15:55

Сообщение sshd » Пн фев 26, 2007 01:58

Art123 писал(а):Вообще существует же какой то системный таймер по которому коммуникатор впадает в спячку и выключает экран.. только как бы до него добраться?
не совсем так...... тоесть там не таймер.
и его значение похоже что не получить, только сбросить можно (через SystemIdleTimerReset - это для невыключения девайса).
Samsung GT-S8500 + MicroSD 8Gb

kvv@home
Студент (1 lvl)
Сообщения: 44
Зарегистрирован: Чт янв 11, 2007 23:30

Сообщение kvv@home » Пн фев 26, 2007 02:09

mkol писал(а):Функция GetIdleTime() возвращает время простоя процессора, но она не работает на WM5.
mkol, не совсем так. Она девайсозависимая. На некоторых девайсах все же работает и под WM5/ Но вы правы, она не подходит для данной задачи.
Art123 писал(а):Вообще существует же какой то системный таймер по которому коммуникатор впадает в спячку и выключает экран.. только как бы до него добраться?
Установить и прочитать значение таймаута можно с помощью SystemParametersInfo().
Art123 писал(а):Любопытен вариант с хуками,пожалуйсто подскажите подробнее, в сдк про это не нашел ничего
вот тут немного про это есть:
http://www.megawap.ru/~wap/dev/ce_dev_f ... 0sort%20of.

PS
Впрочем, на счет хуков под WM5/WM6 похоже облом.
См каменты к примеру хука под wm2003
http://forums.microsoft.com/MSDN/ShowPo ... 4&SiteID=1

Видимо нужен другой способ. Или надо как-то переформулировать условие задачи.
kvv

Art123
Новенький (0 lvl)
Сообщения: 6
Зарегистрирован: Чт фев 22, 2007 22:34

Сообщение Art123 » Пн фев 26, 2007 10:23

sshd
Жаль, было бы удобно :(

kvv@home
С таймаутом то понятно, узнать бы начение того с чем он сравниваеться.

Если с хуками тоже ничего не получиться видимо остаеться по таймеру смотреть положение курсора мыши (стилуса) и ассинхронно опрашивать все аппаратные кнопки :(

Ещё вариант GXOpenInput но она похоже дальше себя события не пропускает, так ведь ?

sshd
Нобелевский лауреат (7 lvl)
Сообщения: 2159
Зарегистрирован: Вс мар 19, 2006 15:55

Сообщение sshd » Пн фев 26, 2007 10:37

Art123 писал(а):С таймаутом то понятно, узнать бы начение того с чем он сравниваеться
а там хитро........
есть куча event'ов, и для каждого из них есть таймаут. потом делается одна большая wait'овая функция, которая всех их ждёт с минимальным из таймаутов.
если происходит установка какого-нить из event'ов (например по функции SystemIdleTimerReset или по прикосновению к экрану), то соответствующий таймаут сбрасывается на исходное значение.
ну и потом всё по новой - снова wait.
т.е. таймера никакого нет, и ничего с ним не сравнивается.
Samsung GT-S8500 + MicroSD 8Gb

Art123
Новенький (0 lvl)
Сообщения: 6
Зарегистрирован: Чт фев 22, 2007 22:34

Сообщение Art123 » Пн фев 26, 2007 13:28

sshd

Однако ...

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

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

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

mkol
Академик (6 lvl)
Сообщения: 1189
Зарегистрирован: Вс апр 11, 2004 12:14

Сообщение mkol » Пн фев 26, 2007 19:08

На ARM эмуляторе от Мелкософта функция GetIdleTime() работает на WM 2003/SE, но на WM5 не работает.

sshd
Нобелевский лауреат (7 lvl)
Сообщения: 2159
Зарегистрирован: Вс мар 19, 2006 15:55

Сообщение sshd » Пн фев 26, 2007 19:56

mkol писал(а):На ARM эмуляторе от Мелкософта функция GetIdleTime() работает на WM 2003/SE, но на WM5 не работает
ну а причём тут эмулятор.
в msdn ясно сказано, что это oem-dependent. кто хочет, тот и делает.
а кто не хочет - не делает...
Samsung GT-S8500 + MicroSD 8Gb

std.denis
Новенький (0 lvl)
Сообщения: 7
Зарегистрирован: Чт мар 09, 2006 14:28

Сообщение std.denis » Пн мар 12, 2007 12:32

вроде сталкивался с подобной задачей. если не то - сорри :)
в винде есть 2 события: PowerManager/UserActivity_Inactive и PowerManager/UserActivity_Active. они собственно и генерятся ОСью при простое и активности. это подсмотрел в сорцах platform builder wince420 :)

скопипастю сюда свой пост с другого форума, на всякий случай:
«накрыватель экрана, вместо гашения подсветки», std.denis писал(а):написал сабж. просто надоело, что когда выключена подсветка тычок в экран может попасть куда-ть не туда. поэтому софтинка накрывает экран fullscreen-окном, а когда по ней тапают - включает подсветку и скрывает это окно.
побочным эффектом получилось выключение экрана, вместо подсветки (при неактивности).

если программа уже запущена - вторая копия откроет настройки таймаутов. оттуда же можно её выгрузить.
еще хотелось бы пошаманить с кнопкой Power - повесить софтинку на нее.

прикладываю сорцы - вдруг кому будут интересны.
если что, не стесняйтесь - созидательные комменты интересны.

з.ы. tapCat это tap Catcher ;)
Вложения
tapCat.zip
tap catcher
(5.88 КБ) 49 скачиваний

Закрыто

Вернуться в «Программирование для КПК»