如何在Delphi中设置系统范围的API挂钩?

时间:2010-06-28 06:45:50

标签: delphi winapi hook api-hook

有没有人知道使用Delphi进行系统范围的API挂钩?

我下载了madCodeHook,但它没有任何来源,所以我不想使用它;我想自己编程。

我找到了an article on Code Project,但它是在C ++中。请帮我在Delphi 2010中编写。

2 个答案:

答案 0 :(得分:1)

@Phoenix,你可以试试uallCollection库,是用delphi 7编写的(我在delphi 2007中测试过它可以正常工作),并附带了一组可以从{{3}下载的例子}和完整的here。唯一的缺点是自07-07-2006以来没有更新,但我个人甚至在Windows 7上测试了这个库,它运行正常。

答案 1 :(得分:0)

你必须使用钩子程序(全局:整个系统;或本地:一个程序或线程)。

基本上,您将调用以下程序:

  • SetWindowsHookEx函数:安装一个钩子(监视系统事件)
  • 钩子函数:当我们“挂钩”的事件发生时,这是windows调用的过程。
  • 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

祝你好运