Системные
перехватчики – это спец-е функции, вызываемые ОС при возникновении условий
перехвата. Чаще всего системные перехватчики работают с оконными сообщениями.
Системный перехватчик можно установить на выбранную нить или на все нити
текущего рабочего стола.
Если
Системный перехватчик должен перехватывать не только сообщения текущего
процесса, но и сообщения других процессов этого рабочего стола, то функция
перехвата должна находиться в 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);
Комментариев нет:
Отправить комментарий