帖个HOOK鼠标滚轮滚动的DLL

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

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

【 tulaoshi.com - 鼠标滚轮 】

 

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

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

  interface

  uses
  Windows,Messages;

(本文来源于图老师网站,更多请访问https://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.

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

来源:https://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...
标签: Web开发
之前我们用Flash做按钮和画廊等,现在jQuery、Mootools、Scriptallicious、YUI和Prototype等JavaScript框架可以用轻量的代码来获得和Flash一样的效果,从而可以替换掉Flash,这也同样给网站开发人员和设计师很大的创意空间。 但是如何在不让用户分散注意力并增加网站的价值的情况下高效的使用这些框架? 看一下下面的这30个网站例子,它们...

经验教程

771

收藏

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