Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.07;
Скачать: CL | DM;

Вниз

При помощи какой переменной или функции можно узнать ...   Найти похожие ветки 

 
Prohodil Mimo ©   (2004-10-22 16:30) [0]

...время которое пользователь ничего не делал, не жал мышь, не трогал клаву?
Гдето видел, но не помню где, что есть в системе переменная отвечающая за это и по которой ScreenSaver включается.

Мне нужно сделать что бы моя программа закрывалась по истечении определённого времени. Отдельный свой таймер запускать не охота.


 
Anatoly Podgoretsky ©   (2004-10-22 16:35) [1]

Эту переменную тебе придется заводить самому!


 
Prohodil Mimo ©   (2004-10-22 16:38) [2]

Anatoly Podgoretsky ©   (22.10.04 16:35) [1]
Значит нельзя узнать у винды сколько уже времени спит юзер?


 
Алхимик ©   (2004-10-22 16:44) [3]


> [2] Prohodil Mimo ©   (22.10.04 16:38)
> Anatoly Podgoretsky ©   (22.10.04 16:35) [1]
> Значит нельзя узнать у винды сколько уже времени спит юзер?

Почему спит, может он ест? :)


 
Prohodil Mimo ©   (2004-10-22 16:47) [4]

...а может это дворник злой? (с) пластилиновая ворона.


 
Digitman ©   (2004-10-22 16:47) [5]


> Prohodil Mimo


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


> Мне нужно сделать что бы моя программа закрывалась по истечении
> определённого времени


оформи ее как скринсевер -  и будет тебе счастье.


 
Prohodil Mimo ©   (2004-10-22 16:53) [6]

Digitman ©   (22.10.04 16:47) [5]
оформи ее как скринсевер -  и будет тебе счастье.


мне нужно ЗАКРЫТИЕ программы, а не ЗАПУСК :о)

Как вариант - запуск скринсавера закрывающего мою прогу :о) (шутка)


 
Юрий Зотов ©   (2004-10-22 16:55) [7]

> Prohodil Mimo ©   (22.10.04 16:30)

При запуске программа ставит глобальные хуки на клаву и мышь. При каждом событии мыши/клавы этии хуки посылают сообщение окну программы. В программе работает таймер и при поступлении этого сообщения он сбрасывается в ноль. А по событию OnTimer программа снимает хуки и закрывается. Все.

Только что значит - "юзер спит"? А если он полчаса один экран вордового документа читает - это спит или не спит?


 
Игорь Шевченко ©   (2004-10-22 17:00) [8]

Юрий Зотов ©   (22.10.04 16:55) [7]

msidle.dll - там реализован механизм с хуками, в случае, если система не поддерживает функции GetLastInputInfo


 
Кулюкин Олег   (2004-10-22 17:04) [9]

попробуйте обрабатывать TApplication.OnIdle.


 
Digitman ©   (2004-10-22 17:06) [10]


> Prohodil Mimo ©   (22.10.04 16:53) [6]


разработай, инсталлируй. активируй при старте системы свой KMD

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


 
Prohodil Mimo ©   (2004-10-22 17:08) [11]

Юрий Зотов ©   (22.10.04 16:55) [7]
Не хотелось прогу хуками нагружать.


> А если он полчаса один экран вордового документа
> читает - это спит или не спит?


ну и пусть читает, а моя прога должна закрыться. Перед закрытием выдам сообщение, что прога закроется через Х секунд. Жми "закрыть" или "отменить закрытие".


 
Юрий Зотов ©   (2004-10-22 17:15) [12]

> Prohodil Mimo ©   (22.10.04 17:08) [11]

> Не хотелось прогу хуками нагружать.
> ну и пусть читает, а моя прога должна закрыться.

В таком случае логичнее закрывать программу, если юзер N минут не работает именно с ней, а не вообще. А тогда можно обойтись и без хуков. Схема остается той же, но таймер сбрасывается в обработчике Application.OnMessage, если в него пришло сообщение мыши или клавы.


 
Prohodil Mimo ©   (2004-10-22 17:24) [13]

Юрий Зотов ©   (22.10.04 17:15) [12]
но таймер сбрасывается в обработчике Application.OnMessage


точно, так и сделаем. спасибо!

ЗЫ. что-то тормозю, мог бы и сам догадаться.


 
wicked ©   (2004-10-22 17:53) [14]

кстати, если нужна реакция программы на запуск скринсейвера, то можно обрабатывать WM_SYSCOMMAND с параметром SC_SCREENSAVE....
возвратим 0 - система подумает, что скринсейвер запущен,
возвратим 1 - она так не подумает.... :)
просто можно реагировать на сам факт пришествия такого сообщения и предпринимать необходимые действия.......
кстати, добавлю, что если возвращать 0 (скринсейвер запущен), то система с поределенным периодом будет все равно передавать это сообщение.... проверялось на win95....



Страницы: 1 вся ветка

Текущий архив: 2004.11.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.023 c
14-1097965283
vecna
2004-10-17 02:21
2004.11.07
Приплыли...


1-1098394798
Makhanev A.S.
2004-10-22 01:39
2004.11.07
Директивы условной компиляции...


11-1081957251
KQ
2004-04-14 19:40
2004.11.07
TAsyncSocket.KillWinsockBug?


6-1093710572
Фёдор Мегатронов
2004-08-28 20:29
2004.11.07
Как узнать имя файла по указанному урлу ?


1-1098794068
Senti
2004-10-26 16:34
2004.11.07
Контрол теряет фоксус при первом создании формы