当前位置:首页 > 服务端 > 一个系统钩子

一个系统钩子

library 系统钩子;
uses
  System.SysUtils,
  windows,
  System.Classes;

{$R *.res}
var           //定义全局变量
hHook:integer;
function HookProc(iCode: Integer;    //处理系统钩子的函数
wParam: WPARAM;
lParam: LPARAM): LRESULT; stdcall; export; //书写调用规则,记得加 stdcall
begin
   Result := 0;//注意返回值必须为0,允许对窗口的操作
     try
     if iCode = HCBT_DESTROYWND then begin//捕获关闭窗口的消息
       Winexec('notepad.exe',SW_SHOW);    //预处理消息前执行的代码 ,可自定义
     end;

    except
end;
end;

procedure LoadDestroyWndHook;    //设置系统挂钩
begin
hHook:=SetWindowsHookEx(WH_CBT,HookProc,Hinstance,0);   //[Error] HookMsg.dpr(65): Incompatible types: 'Calling conventions differ'
end;                                                      //函数呼叫约定不一致-->出错

procedure UnLoadDestroyWndHook; //注销系统挂钩
begin
    UnHookWindowsHookEx(hHook);
    hHook := 0;
end;

exports                           //输出函数
    LoadDestroyWndHook,
    UnLoadDestroyWndHook;
begin
end.

 

调用钩子

 function LoadDestroyWndHook: BOOL;   external 'HookMsg.dll';
function UnLoadDestroyWndHook: BOOL; external 'HookMsg.dll';
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
UnLoadDestroyWndHook;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  LoadDestroyWndHook;

作者:ring_hacker
来源链接:https://www.cnblogs.com/onionhacker/p/3536932.html

版权声明:
1、Java侠(https://www.javaxia.com)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaxia.com/server/124811.html

分享给朋友: