帖個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比較菜,有不好的地方望大家指出,改正!!!
新聞熱點
疑難解答