帖个HOOK鼠标滚轮滚动的DLL

ZPK俊少

ZPK俊少

2016-02-19 18:48

想不想get新技能酷炫一下,今天图老师小编就跟大家分享个简单的帖个HOOK鼠标滚轮滚动的DLL教程,一起来看看吧!超容易上手~

 

  帖个HOOK鼠标滚轮滚动的DLL。(我很菜,大家板砖少点,谢谢合作!!)
  
  //====================================
  library hookprj;
  uses
    SysUtils,
    Classes,
    Unit1 in 'Unit1.pas';
  exports
  EnableMsgHook,  //只要把这两个函数输出就可以了,
  DisableMsgHook;//
  begin
  end.
  //====================================
  
  
  //====================================
  unit Unit1;

  interface

  uses
  Windows,Messages;

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  var
  HookHandle:  HHOOK;//钩子的句柄值。
  
  function  MsgHookProc(Code: Integer; WParam: Longint;Msg:Longint):  LRESULT;stdcall;
  //鼠标钩子的回调函数,即是用它来处理得到消息后要干什么。。
  //nCode参数是Hook的标志,一般只关心小于0时。
  //WParam参数表示鼠标消息的类型
  //LParam参数是一个指向  TMOUSEHOOKSTRUCT  结构的指针。结构包含了鼠标消息的状态,我只用了hwnd一个
  //即鼠标消息要传递给的窗口句柄。
  //返回值如果不是0的话windows就把这个消息丢掉,其它的程序就不会再收到这个消息了。

  function  EnableMsgHook:Boolean;  stdcall;  export;
  function  DisableMsgHook:Boolean;  stdcall;  export;//两个函数都是Boolean类型,成功都是返回True
  implementation
  
  function  MsgHookProc(Code: Integer; WParam: Longint;Msg:Longint):  LRESULT;stdcall;
  begin
   if (Code = HC_ACTION) then
      if PMsg(Msg)^.Message = WM_MOUSEWHEEL then  //鼠标滚动
      begin
        if HIWORD(PMsg(Msg)^.wParam)=120 then        // 上滚
        begin
              //做你想做的。
              ShowWindow (pmsg(msg)^.hwnd,SW_MAXIMIZE );
        end;
  
        if HIWORD(PMsg(Msg)^.wParam)120 then        // 下滚
        begin
              //做你想做的。
              ShowWindow (pmsg(msg)^.hwnd,SW_RESTORE );     
        end;
        PMsg(Msg)^.Message := 0;
      end;
      Result :=CallNextHookEx(HookHandle, Code, WParam, Longint(@Msg));
  end;

  function  EnableMsgHook:Boolean;  stdcall;  export;
  begin
  if  HookHandle  =  0  then  //为了安全,必须判断一下再设置钩子。
  Begin
  //  第三个参数的Hinstance  在Delphi中有定义,用就可以了。第四个参数必须为0
  HookHandle  :=  SetWindowsHookEx(WH_GETMESSAGE,@MsgHookProc,Hinstance,0);
  Result  :=  True;
  end
  else
  Result  :=  False;
  end;

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  function  DisableMsgHook:Boolean;  stdcall;  export;
  begin
  if  HookHandle   0  then  //如果有钩子就卸掉他。
  begin
  UnHookWindowsHookEx(HookHandle);
  HookHandle  :=  0;
  Result  :=  True;
  end
  else
  Result  :=  False;
  end;

  end.

  //====================================
  
  接口函数是EnableMsgHook和,DisableMsgHook。怎么用,大家应该清楚吧,本人对DELPHI比较菜,有不好的地方望大家指出,改正!!!

展开更多 50%)
分享

猜你喜欢

帖个HOOK鼠标滚轮滚动的DLL

编程语言 网络编程
帖个HOOK鼠标滚轮滚动的DLL

Win7鼠标滚轮6个玩法

电脑入门
Win7鼠标滚轮6个玩法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

让VB应用程序支持鼠标滚轮

编程语言 网络编程
让VB应用程序支持鼠标滚轮

2345看图王如何使用鼠标滚轮翻页?

电脑网络
2345看图王如何使用鼠标滚轮翻页?

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

鼠标滚轮上下乱跳怎么办

鼠标
鼠标滚轮上下乱跳怎么办

调整Ctrl键加鼠标滚轮玩尺寸的方法

电脑入门
调整Ctrl键加鼠标滚轮玩尺寸的方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

面向.NET开发人员的Ajax 技术平台策略(1)

面向.NET开发人员的Ajax 技术平台策略(1)

My irrepressible fear to be afraid to go timid

My irrepressible fear to be afraid to go timid
下拉加载更多内容 ↓