Как установить общесистемный хук API в Delphi? - PullRequest
0 голосов
/ 28 июня 2010

Кто-нибудь знает об общесистемном перехвате API с Delphi?

Я скачал madCodeHook, но у него нет источника, поэтому я не хочу его использовать;Я хочу запрограммировать его сам.

Я нашел статью о Code Project , но она написана на C ++.Пожалуйста, помогите мне написать это в Delphi 2010.

Ответы [ 2 ]

1 голос
/ 28 июня 2010

@ Phoenix, вы можете попробовать библиотеку uallCollection , написанную на Delphi 7 (я тестировал в Delphi 2007, и она работает нормально), и поставляется с набором примеров, которые можно скачать с здесь и полный исходный код .Единственный недостаток - не обновлялся с 07-07-2006, но лично я протестировал эту библиотеку даже на Windows 7, и она работает нормально.

0 голосов
/ 28 июня 2010

вам нужно использовать подключаемые процедуры (глобальные: вся система; или локальные: отдельная программа или поток).

По сути, вы будете вызывать следующие процедуры:

  • Функция 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

удачи

...