Ассемблер для Windows



     Фильтр лфс-40 смотрите на fp-6m.ru. |     

Фильтры (HOOKS)



Фильтры (HOOKS).

Мы рассмотрим весьма действенное средство, чаще всего используемое для отладки программ. Средство это называют фильтрами или ловушками52. Смысл его заключается в том, что Вы при желании можете отслеживать сообщения как в рамках одного приложения, так и в рамках целой системы. В этой связи фильтры делят на глобальные (в рамках всей системы) и локальные (в рамках данного процесса). Работая с фильтрами, надо иметь в виду, что они могут существенным образом затормозить работу всей системы. Особенно это касается глобальных фильтров. С точки зрения программирования мы просто определяем функцию, которая вызывается системой при возникновении некоторого события. Можно также говорить о сообщении, приходящем на функцию фильтра.

Рассмотрим некоторые средства для работы с фильтрами. Ниже перечислены основные типы фильтров или сообщения.

  • WH_CALLWNDPROC - фильтр срабатывает, когда вызывается функция SendMessage.
  • WH_CALLWNDPROCRET - фильтр срабатывает, когда функция SendMessage возвращает управление.
  • WH_CBT - сообщение приходит, когда что-то происходит с окном.
  • WH_DEBUG - данное сообщение посылается перед тем, как послать сообщение какому-либо другому фильтру.
  • WH_GETMESSAGE - данный фильтр срабатывает, когда функция GetMessage принимает какое-либо сообщение из очереди.
  • WH_JOURNALRECORD - данное сообщение приходит на процедуру фильтра, когда система удаляет из очереди какое-либо сообщение.
  • WH_JOURNALPLAYBACK - вызывается за предыдущим вызовом (WH_JOURNALRECORD).
  • WH_KEYBOARD - сообщение приходит, когда происходят клавиатурные события.
  • WH_MOUSE - аналогично предыдущему, но относится к событиям с мышью.
  • WH_MSGFILTER - вызывается в случае событий ввода, которые произошли с диалоговым окном, меню, полосой прокрутки, но до того, как эти события были обработаны в пределах данного процесса.
  • WH_SHELL - данный фильтр срабатывает, когда что-то происходит с Windows-оболочкой.
  • WH_SYSMSGFILTER - аналогично сообщению WH_MSGFILTER, но относится ко всей системе.
  • Фильтр устанавливается при помощи функции SetWindowsHookEx. Рассмотрим параметры этой функции.




      Содержание  Назад  Вперед