Как установить общесистемный хук 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

удачи

Другие вопросы по тегам