使用Hook出了问题
iame 2001-07-20 07:45:52 最近从Java转到Windows上来,由于没有多少Windows平台经验,遇到一个问题无策了.问题是这样的:我想作一个例子,演示Locate Hook的用法,几乎相同的代码,截获Key和Mouse事件都正常,但截获GetMessage时出了问题:一按按钮开始截获消息,在IDE下,就把Delphi退出来,如果运行EXE,周围的程序都死光光。。。
请各位看一下是怎么一回事:
,下面是我的部分代码:
GetMessageHook:HHOOK;
//HOOK函数:(我想把拦截的消息显示在一个lbLog:ListBox中)
function GetMessageHookProc(code:Integer;wParam,lParam:LongInt):LongInt;stdcall;
const
LogStr='GetMessage code:%x,wParam:%x,hWnd:%x,message:%x,time:%d,X:%d,Y:%d';
var
temp:String;
cmsg:^MSG;
begin
Result:=0;
cmsg:=Ptr(lParam);
temp:=Format(LogStr,[code,wParam,cmsg.hwnd,cmsg.message,cmsg.time,cmsg.pt.x,cmsg.pt.y]);
HookForm.lbLog.items.add(temp);
if(code<0)then
Result:=CallNextHookEx(GetMessageHook,code,wParam,lParam);
end;
按钮的响应函数
procedure THookForm.bStartClick(Sender:TObject);
begin
GetMessageHook:=SetWindowsHookEx(WH_GETMESSAGE,GetMessageHookProc,hInstance,0);
end;