//子类处理 function MyProc(Hwn,Msg,wParam,lParam:longint):LRESULT; stdcall; begin result:=0; case Msg of //拦截消息 WM_ACTIVATEAPP,WM_ACTIVATE,WM_MOVE:begin MessageBeep(MB_OK);exit; end; WM_DESTROY: begin MessageBeep(MB_ICONHAND); PMem.hHandle:=0; PMem.oldproc:=nil; PMem.OldFun:=0; exit; end; end; result:=CallWindowProc(PMem.oldproc,hWn,Msg,wParam,lParam); end;//替换窗口处理函数 function SetSTYLE:boolean;stdcall; begin result:=false; if (PMem.FrmStyle<>0)or(PMem.hHandle=0) then exit; PMem.OldProc:=FARPROC(setwindowlong(PMem.hHandle,GWL_WNDPROC,longint(@MyProc))); //设置新函数地址 PMem.FrmStyle:=getwindowlong(PMem.hHandle,GWL_STYLE);//原样式 SetWindowLong(PMem.hHandle,GWL_STYLE,WS_CAPTION);//窗口化 result:=true; end;procedure UnSTYLE;stdcall; //还原窗口处理函数 begin SetWindowLong(PMem.hHandle,GWL_STYLE,PMem.FrmStyle);//窗口化 setwindowlong(PMem.hHandle,GWL_WNDPROC,longint(@PMem.OldProc)); //设置新函数地址 PMem.FrmStyle:=0; PMem.OldProc:=nil; end;
//安装HOOK function SetHook(hW:HWND):boolean;stdcall;export; var pId,tID:DWORD; begin if PMem.OldHook<>0 then UnHook; PMem.FrmStyle:=0; PMem.hHandle:=hW; tID:=GetWindowThreadProcessId(hW,@pId); PMem.OldHook := SetWindowsHookEx(WH_Keyboard,@HookProc,HInstance,tID); if PMem.OldHook<>0 then result := true else result:=false; end;
????什麼意思??
http://www.csdn.net/develop/read_article.asp?id=21299
兄弟,我来接分了,我想这个网址上的应该能让你做出来了吧!说得很详细的哟!
来了
自己去找找吧!
google
function MyProc(Hwn,Msg,wParam,lParam:longint):LRESULT; stdcall;
begin
result:=0;
case Msg of //拦截消息
WM_ACTIVATEAPP,WM_ACTIVATE,WM_MOVE:begin MessageBeep(MB_OK);exit; end;
WM_DESTROY:
begin
MessageBeep(MB_ICONHAND);
PMem.hHandle:=0;
PMem.oldproc:=nil;
PMem.OldFun:=0;
exit;
end;
end;
result:=CallWindowProc(PMem.oldproc,hWn,Msg,wParam,lParam);
end;//替换窗口处理函数
function SetSTYLE:boolean;stdcall;
begin
result:=false;
if (PMem.FrmStyle<>0)or(PMem.hHandle=0) then exit;
PMem.OldProc:=FARPROC(setwindowlong(PMem.hHandle,GWL_WNDPROC,longint(@MyProc))); //设置新函数地址
PMem.FrmStyle:=getwindowlong(PMem.hHandle,GWL_STYLE);//原样式
SetWindowLong(PMem.hHandle,GWL_STYLE,WS_CAPTION);//窗口化
result:=true;
end;procedure UnSTYLE;stdcall; //还原窗口处理函数
begin
SetWindowLong(PMem.hHandle,GWL_STYLE,PMem.FrmStyle);//窗口化
setwindowlong(PMem.hHandle,GWL_WNDPROC,longint(@PMem.OldProc)); //设置新函数地址
PMem.FrmStyle:=0;
PMem.OldProc:=nil;
end;
function SetHook(hW:HWND):boolean;stdcall;export;
var pId,tID:DWORD;
begin
if PMem.OldHook<>0 then UnHook;
PMem.FrmStyle:=0;
PMem.hHandle:=hW;
tID:=GetWindowThreadProcessId(hW,@pId);
PMem.OldHook := SetWindowsHookEx(WH_Keyboard,@HookProc,HInstance,tID);
if PMem.OldHook<>0 then result := true else result:=false;
end;