帖個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,...