Как установить общесистемный хук API в Delphi?
Кто-нибудь знает об общесистемном перехвате API с Delphi?
Я скачал madCodeHook, но у него нет источника, поэтому я не хочу его использовать; Я хочу запрограммировать это сам.
Я нашел статью о проекте кода, но это на C++. Пожалуйста, помогите мне написать это в Delphi 2010.
2 ответа
@Phoenix, вы можете попробовать библиотеку uallCollection, она написана на Delphi 7 (я тестировал на Delphi 2007, и она работает нормально), и поставляется с набором примеров, которые можно скачать отсюда, и полным исходным кодом. единственный недостаток не обновлялся с 07-07-2006, но лично я протестировал эту библиотеку даже на Windows 7, и она работает нормально.
Вы должны использовать подключаемые процедуры (глобальные: вся система; или локальные: одна программа или поток).
По сути, вы будете вызывать следующие процедуры:
- Функция SetWindowsHookEx: установить хук (следить за системным событием)
- Функция перехвата: это процедура, вызываемая окнами, когда происходит событие, которое мы "перехватываем".
- Функция UnhookWindowsHookEx: убрать ваш хук
Вот простой пример локальной клавиатуры, контролирующей записи клавиатуры:
//setting up the hook;
//kbHook is a variable of type HHook (unit Windows);
//kbr_Hook is the procedure that will be called once the event happens;
kbHook:=setwindowshookex(WH_KEYBOARD,@kbr_Hook,0,GetCurrentThreadID());
Документация MSDN: http://msdn.microsoft.com/en-us/library/ms644990%28VS.85%29.aspx
удачи