![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Hook на мышь и клавиатуру только в своем приложении [D7, WinXP]
Vladimir © (2007-12-19 09:57:00)всем доброго дня!
задача в том, чтобы отслеживать факт нажатия любой кнопки мыши в дочернем окне приложения (дабы сделать вывод, что пользователь работаетс этим окном). И если в течение 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;
проблема в том, что хук на мышь (как, впрочем, и на клавиатуру) срабатывает только один раз.
MetalFan (2007-12-20 13:00:00) [1]
> И если в течение 10 минут пользователь не предпринимает
> никаких действий - закрыть окно.
копай в сторону полезной функции GetLastInputInfo.
> The GetLastInputInfo function retrieves the time of the
> last input event.
Vladimir (2007-12-19 11:06:00) [2]этот вариант я уже использовал... просто хотелось через хуки.
все равно спасибо. )
проблема была не в хуке, а в обновлении интервала ожидания.
Сергей М. (2007-12-19 10:11:00) [3]
> ставлю локальныйхук
Это не локальный хук.
Да и нафих не нужен хук для решения такой простой задачи.
Лови Application.OnMessage, фильтруй сообщения мыши и клавы, анализируй окно-приемник сообщения, взводи соответствующий этому окну 10-минутный таймер. Через 10 минут таймер сообщит, что время истекло, это и будет сигналом к закрытию окна.