Системные перехватчики (HOOK).

Системные перехватчики – это спец-е функции, вызываемые ОС при возникновении условий перехвата. Чаще всего системные перехватчики работают с оконными сообщениями. Системный перехватчик можно установить на выбранную нить или на все нити текущего рабочего стола.
Если Системный перехватчик должен перехватывать не только сообщения текущего процесса, но и сообщения других процессов этого рабочего стола, то функция перехвата должна находиться в DLL.

Адрес этой функции можно получить с помощью динамического связывания. После установления перехватчика эта библиотека будет внедрена во все процессы, для которых требуется активировать функцию перехвата. Причем эта функция будет вызываться в контексте той нити, которая работает с оконным сообщением.

Функция Set:

HHOOK SetWindowsHookEx(
                   int idHook;
                   HOOKPROC lpFn,
                   HINSYANSE hMOD,
                   DWORD dwThreadId);
1-тип перехватчика
2-функция перехвата
3-Dll
4-идентификатор нити(0-на все нити рабочегостола)
Все функции перехвата имеют след-й вид:
LRESULT CALLBACK HOOKProc (
                   int nCode,
                   WPARAM wParam,
                   LPARAM lParam);
Некоторые состояния процесса можно получить несколькими способами с помощью перехватчиков разных типов. Выбор конкретного перехватчика производится исходя из требований задачи.
Типы перехватчиков.




Перехватчик
Обл. действия
Название функции
Описание
WH_CALLWNDPROC
TG
CallWndProc
Проверка оконных сообщений перед посылкой оконной процедуре
WH_CALLWNDPROCRET
TG
CallWndRetProc
Проверка оконных сообщений после посылки оконной процедуре
WH_CBT
TG
CBTProc
Проверка состояния окна (создание, уничтожение, получение фокуса ввода, активация, минимизация и т.д.)
WH_DEBUG
TG
DebugProc
Проверка других перехватчиков
WH_FOREGROUNDIDLE
TG
ForegroundIdleProc
Выполняется, когда компьютер входит/выходит из состояния простоя
WH_GETMESSAGE
TG
GetMsgProc
Проверка всех сообщений в момент вызова функций GetMessage или PeekMessage
WH_JOURNALRECORD
G
JournalRecordProc
Запись всех сообщений
WH_JOURNALPLAYBACK
G
JournalPlayBackProc
Проигрывание записанных оконных сообщений
WH_KEYBOARD
TG
KeyboardProc
Проверка символов, введенных с клавиатуры
WH_KEYBOARD_ALL
G
LowLevelKeyboardProc
Проверка нажатий клавиш клавиатуры
WH_MOUSE
TG
MouseProc
Проверка логических действий мышью
WH_MOUSE_LL
G
LowLevelMouseProc
Проверка движений мышью, нажатий/отжатий клавиш
WH_MSGFILTER
TG
MessageProc
Проверка оконных сообщений для диалоговых окон, меню, выпадающий списков и MessageBox
WH_SYSMSGFILTER
G
SysMsgProc
То же самое только для системной области
WH_SHELL
TG
ShellProc
Проверка действия оболочки (переключение языка, активация окна, вывод списокв задач через это окно и так далее

Для отключения системы перехватчика используется следующая функция:
BOOL UnhookWindowsHookEx (
HHOOK hhk);

Комментариев нет:

Отправить комментарий