帖个HOOK鼠标滚轮滚动的DLL。
2005-01-15 23:22
288 查看
帖个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比较菜,有不好的地方望大家指出,改正!!!有什么问题,可以到我的BLOG留言! http://blog.csdn.net/biku
//====================================
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比较菜,有不好的地方望大家指出,改正!!!有什么问题,可以到我的BLOG留言! http://blog.csdn.net/biku
相关文章推荐
- javaScript判断鼠标滚轮的上下滚动
- 监测鼠标滚轮的上下滚动来实现导航条显示隐 4000 藏
- ubuntu更改鼠标滚轮方向为自然方向(运动方向和滚轮滚动方向一致)
- mfc中鼠标滚轮上下滚动计数问题(OnMouseWheel)
- JavaScript判断鼠标滚轮滚动方向
- 怎样使DataGrid支持鼠标滚轮滚动记录
- WPF 使用鼠标滚轮控制ListBox水平滚动条滚动
- C# panel控件实现鼠标滚轮滚动拖动滚动条
- flex鼠标滚轮事件(鼠标滚动后,数字变换)
- ubuntu鼠标滚轮方向修改方法(运动方向和滚轮滚动方向一致)
- ScrollBox 响应鼠标滚轮和ComboBox禁止滚动
- DBGrid支持鼠标滚轮滚动的解决办法
- 解决:鼠标滚轮快速向上滚动会使网页后退
- DataWindow如何彻底禁止鼠标滚轮滚动到下一条或上一条记录
- js判断鼠标滚轮上下滚动
- c# dev控件 gridcontrol 数据跟随鼠标滚轮滚动也可以编辑
- 【求助】自定义事件/鼠标滚轮滚动放大缩小图片,chrome下失效求解?
- 如何让DbGrid支持鼠标滚轮滚动 转
- 如何让DbGrid支持鼠标滚轮滚动
- zedgraph中禁用鼠标滚轮变焦(禁止画图区域随鼠标滚动改变XY轴,定位)