Текущий архив: 2008.10.19;
Скачать: CL | DM;
ВнизHook на мышь и клавиатуру только в своем приложении Найти похожие ветки
← →
Vladimir (2007-12-19 09:57) [0]всем доброго дня!
задача в том, чтобы отслеживать факт нажатия любой кнопки мыши в дочернем окне приложения (дабы сделать вывод, что пользователь работаетс этим окном). И если в течение 10 минут пользователь не предпринимает никаких действий - закрыть окно.
ставлю локальный хук при показе этого окна:
OnFormShow:CurMouseHook:=SetWindowsHookEx(WH_MOUSE, @MouseProc, HInstance, 0);
function MouseProc(Code: Integer; wParam: LongInt; lParam: LongInt): LongInt; stdcall;
begin
case wParam of
WM_LBUTTONDOWN, WM_RBUTTONDOWN: begin
RecreateTimerInterval;
end;
end;
Result:=CallNextHookEx(CurMouseHook, Code, wParam, lParam);
end;
проблема в том, что хук на мышь (как, впрочем, и на клавиатуру) срабатывает только один раз.
← →
Сергей М. © (2007-12-19 10:11) [1]
> ставлю локальный хук
Это не локальный хук.
Да и нафих не нужен хук для решения такой простой задачи.
Лови Application.OnMessage, фильтруй сообщения мыши и клавы, анализируй окно-приемник сообщения, взводи соответствующий этому окну 10-минутный таймер. Через 10 минут таймер сообщит, что время истекло, это и будет сигналом к закрытию окна.
← →
Vladimir (2007-12-19 11:06) [2]этот вариант я уже использовал... просто хотелось через хуки.
все равно спасибо. )
проблема была не в хуке, а в обновлении интервала ожидания.
← →
MetalFan © (2007-12-20 13:00) [3]
> И если в течение 10 минут пользователь не предпринимает
> никаких действий - закрыть окно.
копай в сторону полезной функции GetLastInputInfo.
> The GetLastInputInfo function retrieves the time of the
> last input event.
Страницы: 1 вся ветка
Текущий архив: 2008.10.19;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.006 c