请教钩子(Hook)回调函数中CallNextHookEx的使用(50分)

  • 主题发起人 主题发起人 zbzb
  • 开始时间 开始时间
Z

zbzb

Unregistered / Unconfirmed
GUEST, unregistred user!
在下对Hook不是很了解,在参考网上一些代码的时候,发现Hook回调函数中,通常有类似的代码:
function CallBackHookFunc(iCode: Integer; wParam: WParam; lParam: LParam): LResult; stdcall;
begin
if (iCode<0) then Result:=CallNextHookEx(hHook,iCode,wParam,lParam) else
if (iCode=hc_Action) then
begin
……
end;
end;

在我参考的代码中,通常回调函数中都有调用“CallNextHookEx”这句代码,但也有的朋友的代码中甚至没有调用这个函数。

在下的疑问是回调函数中那个“CallNextHookEx”有什么用途?还有就是有调用和没有调用有什么区别或后果?
另外,回调函数的返回值(Result)如何判断要返回多少?

问题可能比较简单,只希望能搞清除,望大家能帮忙!
 
CallNextHookEx是把Hook链继续往下走,一般来说CallNextHookEx都要调用的,否则,其他程序的Hook将无法收到这条Hook信息,也就是说,这类Hook到你这个程序就终止了。
Result的值就让CallNextHookEx返回。
 
可以把Hook链看作是一个链表结构的。
当你往中间插入一个额外的节点的时,你必须要将这个节点的下一个指针指向原来的那个,
否则,这个链条将断掉。
 
多人接受答案了。
 
后退
顶部