国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

帖個HOOK鼠標滾輪滾動的DLL

2019-11-18 18:04:41
字體:
來源:轉載
供稿:網友
 

帖個HOOK鼠標滾輪滾動的DLL。(我很菜,大家板磚少點,謝謝合作!!)

//====================================
library hookPRj;
uses
  SysUtils,
  Classes,
  Unit1 in 'Unit1.pas';
exports
EnableMsgHook,  //只要把這兩個函數輸出就可以了,
DisableMsgHook;//
begin
end.
//====================================


//====================================
unit Unit1;

interface

uses
Windows,Messages;

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比較菜,有不好的地方望大家指出,改正!!!



上一篇:拷貝DBGrid當前行

下一篇:黑白圖像的縮小灰度級顯示算法的編寫

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 天等县| 江源县| 侯马市| 新疆| 上犹县| 鄯善县| 绥滨县| 东山县| 宁安市| 永登县| 兴安县| 京山县| 综艺| 汶上县| 教育| 禄劝| 衡东县| 开阳县| 温泉县| 井陉县| 清流县| 密云县| 抚州市| 和平县| 临武县| 垦利县| 庄河市| 太白县| 进贤县| 昌宁县| 军事| 石首市| 达尔| 威海市| 右玉县| 杨浦区| 武川县| 平遥县| 台山市| 赣州市| 延边|