给个VBHOOK的简单程序

来源:百度知道 编辑:UC知道 时间:2024/05/27 18:16:27
各位给我个VBHOOK的简单程序!我不明白一些问题.比如 Public Const WH_CALLWNDPROC = 4.这个不是普通的常量吗?为什么要这样定义?那些常量名还有数值.都不能更改吗?所以请各位给个简单的代码.让我慢慢的了解HOOK..谢谢...

是常量,这样定义可以增加程序的可读性,也就是说别人看到你传入一个参数4,他可能还是还要去翻一下书,找一下参数的含义,而看了WH_CALLWNDPROC则可以省略这个过程。所以数值不能改,改了功能就变了,常量名可以随你的意,不过一般还起WH_CALLWNDPROC 这样的名比较好,这是微软规定的,大部分的知道是什么意思。
手头上没有vb的hook,只有我当初学习时的一个最简单的delphi例子:
function TestHookProc(code:integer;wparam:longint;msg:longint):longint;stdcall;
begin
if (code=HC_ACTION) then
if pmsg(msg)^.message=WM_TestMessage then
begin
showmessage('已经截获消息');
end;
result:=callnexthookex(hookhandle,code,wparam,longint(@msg));
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
hookhandle:=setwindowshookex(wh_getmessage,testhookproc,0,GetCurrentThreadId);
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
postmessage(self.Handle,WM_TestMessage,0,0);
end;