如何将鼠标锁住?又如何解锁?(20分)

  • 主题发起人 主题发起人 zyl000
  • 开始时间 开始时间
哪位大侠快帮帮我吧,我很想知道答案,我会给分的,是不是分太少了?
 
下面把鼠标的移动区域限制在(0,0,1,1)<br><br>var rect:TRect;<br>begin<br>&nbsp; rect.Left:=0;<br>&nbsp; rect.Top:=0;<br>&nbsp; rect.Bottom:=1;<br>&nbsp; rect.Right:=1;<br>&nbsp; windows.ClipCursor(@rect);<br><br>下面恢复鼠标的移动区域<br>&nbsp; windows.ClipCursor(0);<br>
 
To zhihuali:<br>&nbsp; &nbsp; 你这种方法只对当前程序起作用,如切换到其它应用程序就失效了
 
将鼠标隐藏起来<br>SHOWMOUSE(FALSE)
 
to system_owen:<br>&nbsp; &nbsp;你确定有这个函数吗?在哪个单元申明的?
 
showCursor(True)显示鼠标<br>showCursor(False)隐藏鼠标<br>不过也只能在本窗口内有作用<br>
 
到MSDN上查查看
 
zhihuali的方法是有效的。<br>最好用HOTKEY激活被锁的鼠标!
 
用钩子函数肯定可以实现
 
下面是我摘自sdk上的一段:<br>据我理解:只要将调用cursor的计数器减少到0,则cursor在所有窗口内都不会显示<br>若要显示的话,再将计数器还原则可<br>======================================原文如下:<br>The ShowCursor function displays or hides the cursor. <br>int ShowCursor(<br>&nbsp; &nbsp; BOOL bShow // cursor visibility flag &nbsp;<br>&nbsp; &nbsp;); <br>Parameters<br>bShow<br>Specifies whether the internal display counter is to be incremented or decremented. If bShow is TRUE, the display count is incremented by one. If bShow is FALSE, the display count is decremented by one. <br>Return Values<br>The return value specifies the new display counter. <br>Remarks<br>This function sets an internal display counter that determines <br>whether the cursor should be displayed. The cursor is displayed <br>only if the display count is greater than or equal to 0.<br>&nbsp;If a mouse is installed, the initial display count is 0. <br>If no mouse is installed, the display count is -1.
 
To freddyzhu:<br>&nbsp; &nbsp;我已经试过了,即使showcursor(false)返回的值小于0,但也只是对本窗口有效!<br>麻烦啊,,,
 
To 影 子:<br>&nbsp; &nbsp;你有没有仔细试过啊,多点几下鼠标试试看
 
To pine_ant:<br>&nbsp; &nbsp;可不可以给出代码?谢谢
 
procedure TForm1.Timer1Timer(Sender: TObject);<br>var<br>&nbsp; p: Tpoint;<br>begin<br>&nbsp; p.x:=400;<br>&nbsp; p.y:=300;<br>&nbsp; mouse.CursorPos := p;<br>end;<br>然后把TIMER的值设的小点,2000也没问题
 
用系统钩子<br>如果你想在一定范围内用鼠标<br>就对鼠标移动事件进行处理<br><br>如果你现在一定范围内禁用鼠标<br>只要屏蔽范围内的鼠标事件
 
&nbsp;我是想在整个系统中都使鼠标不可见,而不只是针对某一窗口,<br> 如果哪位能够提供代码,我愿意再加30分(不过我不知道可不可以加分)
 
procedure TForm1.Timer1Timer(Sender: TObject);<br>var<br>&nbsp; posRect : TRect; &nbsp;//锁定的范围<br>begin<br>&nbsp; posRect.TopLeft := point(0,0);<br>&nbsp; posRect.BottomRight := point(1,1);<br>&nbsp; ClipCursor(@posRect);<br>&nbsp; Cursor := crNone;<br>end;<br><br>//通过设置Timer.Enabled确定锁定<br>//解锁ClipCursor(nil);
 
用HOOK吧:)
 
谢谢大家!我已经解决了,还是用钩子好,分数不够多,还望大家多多包涵
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部