帖个HOOK鼠标滚轮滚动的DLL

2016-02-19 18:48 61 1 收藏

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

【 tulaoshi.com - 鼠标滚轮 】

 

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

  interface

  uses
  Windows,Messages;

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

  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;

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

  end.

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

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

来源:http://www.tulaoshi.com/n/20160219/1619039.html

延伸阅读
标签: 电脑入门
部分MAC用户不习惯MAC系统鼠标/触摸板的滚动方向,认为这是反的。面对这个问题,我们该如何解决呢?一起来看看下面的解决方法吧。 具体步骤: 1. 通过 LaunchPad 启动系统偏好设置,然后选择鼠标; 2. 在鼠标窗口中选择光标与点按标签; 3. 取消勾选滚动方向:自然前面的复选框; 修改触摸板滚动方向的方法也是一样的。 从系统偏...
标签: 孕前
五类疾病最容易遗传 1.视力问题。近视、色盲和弱视都具有一定遗传性。美国巴尔的摩儿童眼科专家斯图尔特·丹克奈博士说,如果父母都近视,孩子近视的几率达 25%-50%。色盲基因仅由母亲携带,只有男孩会发病。如果母亲携带色盲基因,孩子是色盲的几率为50%。婴儿期的孩子在出生前几月会经常对眼,这 很正常...
钩子(HOOK)机制的使用 作者:e梦缘 SetwindowsHookEx函数提供15种不同的消息监视类型,也就是15中不同的钩子。 分别用于捕获某一特定类型或某一范围的消息(如:键盘消息,鼠标消息等)。 我们这里仅以鼠标钩子的使用为例,讨论在DELPHI下怎样编写DLL程序和怎样在自己的程序中安装使用鼠标钩子函数。 Windows...
Gavin Castleton Serial Cut Jonathan Yuen 180 Degrees Thinking for a Living Ladio Carrot Creative Nirvana the band the show C. L. Holloway Dennis Kleine Harry Wittlinger Suie Paparude Section Seven PixFX Inhouse Reverse Buro Black 5 Mike Tucker ...

经验教程

802

收藏

44
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部