如何屏蔽鼠标按键
在应用程序中如何屏蔽鼠标按键,用delphi实现,请高手指点 问题点数:100、回复次数:10Top
1 楼vickeen(庆哥)回复于 2002-11-20 21:55:53 得分 20
比较简单的办法是,响应Delphi的OnMouseDown事件,其定义如下:
type
TMouseEvent = procedure (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer) of object;
property OnMouseDown: TMouseEvent;
而TMouseButton的定义是这样的:
type TMouseButton = (mbLeft, mbRight, mbMiddle);
当探测到TMouseButton为mbRight,不执行任何语句,既可。
其实这种方法还可以屏蔽鼠标左键和中键,详细情况见Delphi的帮助Top
2 楼vickeen(庆哥)回复于 2002-11-20 21:56:59 得分 30
用钩子Hook,可能挂接wh_getmessage钩子比较好。
Top
3 楼vickeen(庆哥)回复于 2002-11-20 22:01:16 得分 0
不过鼠标的Hook好象比较难。
Top
4 楼stanely(俺是邢她汉子)回复于 2002-11-21 00:48:16 得分 30
在鼠标钩子响应函数里面让result:=-1就可以!最有效!
hhk:=setwindowshookex(wh_mouse,@hookproc,hinstance,0);
这句执行的地方如果在dll里就是操作系统的鼠标钩子,让所有的鼠标点击都失效,如果在exe里面,只是本进程内鼠标点击失效。
function hookproc(ncode:smallint;wparam,lparam:integer):integer;
begin
result:=-1;
if ncode<0 then
result:=callnexthookex(hhk,ncode,wparam,lparam);
end;Top
5 楼uncarman()回复于 2002-11-21 14:55:06 得分 0
我要单单屏蔽鼠标右键,而不是所有按键。
必须用鼠标钩子实现,请指点。Top
6 楼stanely(俺是邢她汉子)回复于 2002-11-21 16:05:48 得分 20
屏蔽右键也简单,
function hookproc(ncode:smallint;wparam,lparam:integer):integer;
begin
if wparam=$0204 then//按了右键。
result:=-1
else
result:=0;
if ncode<0 then
result:=callnexthookex(hhk,ncode,wparam,lparam);
end;
Top
7 楼uncarman()回复于 2002-11-22 09:57:22 得分 0
stanely,你好,用了你的方法在win2000下无法屏蔽鼠标按键,是否是键盘虚拟码(wparam这个参数值不对),请解答。Top
8 楼Fzgta(蝈蝈)回复于 2002-11-26 18:05:43 得分 0
UPTop
9 楼uncarman()回复于 2002-11-28 16:27:08 得分 0
加到100,请高手相助Top
10 楼uncarman()回复于 2002-12-01 20:00:28 得分 0
我用另外一种钩子类型搞定了。尽管你们没有回答准确,我还是非常感谢,散分!Top




