帖個HOOK滑鼠滾輪滾動的DLL。

2021-03-31 08:57:00 字數 2296 閱讀 5103

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

//***********************************=

library hookprj;

uses

sysutils,

classes,

unit1 in 'unit1.pas';

exports

enablemsghook,  //只要把這兩個函式輸出就可以了,

disablemsghook;//

begin

end.

//***********************************=

//***********************************=

unit unit1;

inte***ce

uses

windows,messages;

varhookhandle:  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;

endelse

result  :=  false;

end;

function  disablemsghook:boolean;  stdcall;  export;

begin

if  hookhandle <>  0  then  //如果有鉤子就卸掉他。

begin

unhookwindowshookex(hookhandle);

hookhandle  :=  0;

result  :=  true;

endelse

result  :=  false;

end;

end.

滑鼠滾輪滾動事件wheel

滑鼠的滾輪事件主要有兩種 deltay detail wheeldelta deltamode detail deltax,滑鼠滾輪左右擺動,本屬性是唯讀的。負值,向左 正值,向右。正負方向,跟系統的x座標保持一致。deltay,滑鼠滾輪上下滾動,唯讀。負值,向上 正值,向下。deltamode,屬...

C panel控制項實現滑鼠滾輪滾動拖動滾動條

實驗中panel名稱為pnl suggest 介面初始化時新增panel滑鼠滾動相應 this.pnl suggest.mousewheel new mouseeventhandler formsample mousewheel 滑鼠滾動相應函式 void formsample mousewheel...

滑鼠滾輪控制panel滾動條

在winform開發中,通過設定panel的autoscroll屬性來控制滾動條是否顯示,但顯示滾動條的時候,滑鼠的滾輪是無法控制panel裡面的滾動條的,只能控制form的滾動條,當我們需要控制panel的滾動條的時候,應該怎麼做呢?1 拖乙個panel到form裡面,修改name為panel1,...