Здравствуйте, O.O, Вы писали:
O.O>Как отследить что приложение неактивно (имеется ввиду что пользователь какое-то время не юзает его мышкой и клавой)
В принципе можно повесить таймер и в Application.OnMessage его каждый раз инициализировать, в OnTimter делать то что нужно, а в TTimter.Interval установить необходимое время ожидания. Но ведь OnMessage будет вызываться при всех событиях, а не только для событий клавы и мышки. Поэтому там надо смотреть какое событие пришло и если нужное, то переинициализировать таймер. А какие события смотреть лучше уточнить в форуме по WinAPI, что-то типа WM_MOUSE*, WM_KEY*
Здравствуйте, O.O, Вы писали:
O.O>Как отследить что приложение неактивно (имеется ввиду что пользователь какое-то время не юзает его мышкой и клавой)
несовсем понятно, что имется ввиду.
Есть событие Applicatiom.OnDeactivate, можно в этом событии активировать таймер с интервалом "какое-то время" а в Application.OnActivate, соответственно вырубать этот таймер. Если таймер хоть раз сработает -> значит приложение неактивно в течении Timer.Interval секунд..
Если же нужно определить активно ли приложение в ДАННЫЙ момент, то есть свойство Application.Active..
Здравствуйте, O.O, Вы писали:
O.O>Как отследить что приложение неактивно (имеется ввиду что пользователь какое-то время не юзает его мышкой и клавой)
Если я правильно понял Вас — Вы хотите знать, что пользователь какое-то время не требовал от приложения никаких действий — эта задача состоит из двух частей: зафиксировать время последнего действия и на таймере проверять, не достигнуто ли время "неактивности". По таймеру, полагаю, все понятно, а для фиксации времени я бы воспользовался ActionList'ом; у него есть событие OnExecute, которое для этого должно подойти. Плюсы — этот подход не будет реагировать на пронос мышки над окном приложения, перетаскивание ради открытия другого окна итп.
Если это невозможно, время последнего использования прийдется регистрировать в Application.OnMessage по тем событиям, которые Вы сочтете "использованием" — WM_LBUTTONDOWN и подобным.
Здравствуйте, O.O, Вы писали:
O.O>Как отследить что приложение неактивно (имеется ввиду что пользователь какое-то время не юзает его мышкой и клавой)
IMHO OnIdle тут не совсем проканывает.
Я бы сделал так: завел переменную, которую бы при поступлении события от клавы или крысы выставлял в текущее время (GetTickCount тут вполне уместен). Завел бы таймер и в обработчике события OnTimer проверял, как давно поступило последнее от устройств ввода.