Неактивное приложение
От: O.O  
Дата: 19.06.04 02:58
Оценка:
Как отследить что приложение неактивно (имеется ввиду что пользователь какое-то время не юзает его мышкой и клавой)
Re: Неактивное приложение
От: AMogil Россия  
Дата: 19.06.04 06:05
Оценка:
Здравствуйте, O.O, Вы писали:

O.O>Как отследить что приложение неактивно (имеется ввиду что пользователь какое-то время не юзает его мышкой и клавой)


В принципе можно повесить таймер и в Application.OnMessage его каждый раз инициализировать, в OnTimter делать то что нужно, а в TTimter.Interval установить необходимое время ожидания. Но ведь OnMessage будет вызываться при всех событиях, а не только для событий клавы и мышки. Поэтому там надо смотреть какое событие пришло и если нужное, то переинициализировать таймер. А какие события смотреть лучше уточнить в форуме по WinAPI, что-то типа WM_MOUSE*, WM_KEY*


С уважением, Алексей.
Re: Неактивное приложение
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 19.06.04 16:32
Оценка:
Здравствуйте, O.O, Вы писали:

O.O>Как отследить что приложение неактивно (имеется ввиду что пользователь какое-то время не юзает его мышкой и клавой)


Подумав, вижу несколько путей:

1. Application.OnIdle
2. Таймер
3. Отдельный поток, который проверяет то, что нужно.
Re: Неактивное приложение
От: Jack128  
Дата: 19.06.04 20:27
Оценка:
Здравствуйте, O.O, Вы писали:

O.O>Как отследить что приложение неактивно (имеется ввиду что пользователь какое-то время не юзает его мышкой и клавой)


несовсем понятно, что имется ввиду.
Есть событие Applicatiom.OnDeactivate, можно в этом событии активировать таймер с интервалом "какое-то время" а в Application.OnActivate, соответственно вырубать этот таймер. Если таймер хоть раз сработает -> значит приложение неактивно в течении Timer.Interval секунд..

Если же нужно определить активно ли приложение в ДАННЫЙ момент, то есть свойство Application.Active..
Re: Неактивное приложение
От: Softwarer http://softwarer.ru
Дата: 21.06.04 06:14
Оценка:
Здравствуйте, O.O, Вы писали:

O.O>Как отследить что приложение неактивно (имеется ввиду что пользователь какое-то время не юзает его мышкой и клавой)


Если я правильно понял Вас — Вы хотите знать, что пользователь какое-то время не требовал от приложения никаких действий — эта задача состоит из двух частей: зафиксировать время последнего действия и на таймере проверять, не достигнуто ли время "неактивности". По таймеру, полагаю, все понятно, а для фиксации времени я бы воспользовался ActionList'ом; у него есть событие OnExecute, которое для этого должно подойти. Плюсы — этот подход не будет реагировать на пронос мышки над окном приложения, перетаскивание ради открытия другого окна итп.

Если это невозможно, время последнего использования прийдется регистрировать в Application.OnMessage по тем событиям, которые Вы сочтете "использованием" — WM_LBUTTONDOWN и подобным.
Re: Неактивное приложение
От: Spaider Верблюд  
Дата: 21.06.04 07:15
Оценка:
Здравствуйте, O.O, Вы писали:

O.O>Как отследить что приложение неактивно (имеется ввиду что пользователь какое-то время не юзает его мышкой и клавой)


IMHO OnIdle тут не совсем проканывает.
Я бы сделал так: завел переменную, которую бы при поступлении события от клавы или крысы выставлял в текущее время (GetTickCount тут вполне уместен). Завел бы таймер и в обработчике события OnTimer проверял, как давно поступило последнее от устройств ввода.
... << RSDN@Home 1.1.3 stable >>
--
К вашим услугам,
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.