function SetWindowsHookEx(idHook: Integer; //Тип ловушки
lpfn: TFNHookProc; //Адрес функции-ловушки
hmod: HINST; //Используемый модуль, в котором
//расположена функция ловушки
dwThreadId: DWORD //Идентификатор потока, для
//которого создается ловушка
): HHOOK; stdcall;
В случае успешного создания ловушки функция SetWindowsHookEx возвращает дескриптор новой ловушки (ненулевое значение).
Для удаления ловушки используется функция UnhookWindowsHookEx, принимающая единственный параметр – дескриптор ловушки, возвращенный функцией SetWindowsHookEx. Причем удаление ловушки нужно производить обязательно, поэтому по крайней мере при закрытии приложения не следует забывать вызывать функцию UnhookWindowsHookEx.
Теперь несколько слов о функции CallNextHookEx. Ее объявление имеет следующий вид: