抑制鼠标移动

时间:2011-02-25 16:02:12

标签: c# windows mouse

我需要将Windows鼠标光标冻结在屏幕上,因此它会悬停在特定的UI元素上。当鼠标处于冻结状态时,我仍然希望能够使用“假”鼠标指针与UI进行交互。

目前,我有一个低级鼠标挂钩,可防止WM_MOUSEMOVE消息传递,从而有效地阻止所有真正的鼠标移动。但是,当我没有传递更新的坐标时,窗口实际上会在单独的WM_MOUSEMOVE消息中向我发送旧坐标,就好像是为了纠正鼠标没有移动的事实。

有关如何防止Windows向我发送这些更正坐标的任何想法,或者我如何冻结实际鼠标曲线并仍允许物理鼠标控制“假”光标的另一种方法?

4 个答案:

答案 0 :(得分:1)

您可以使用DirectInput独占模式抑制鼠标光标移动。 必须抑制光标移动时,您应该获取鼠标输入设备。这将阻止Windows光标移动,但您可以使用DirectInput API获取伪游标的消息。

答案 1 :(得分:0)

如果移动鼠标光标位置以响应WM_MOUSEMOVE消息,要将鼠标放回到您想要的位置,您将获得另一个鼠标移动消息,因为鼠标已经再次移动(因为您移动了它)。要停止此操作,请不要设置鼠标位置(如果它已经在正确的位置)。

您可能还想将鼠标位置剪切到窗口并获得对它的独占访问权。

答案 2 :(得分:0)

为什么不在你想要它冻结的地方画一个光标图像,然后设置隐藏的真实鼠标光标(Cursor.Hide IIRC)。

答案 3 :(得分:0)

我不清楚你要做什么,也许为你的应用程序做一个教程,你想显示鼠标移动等等。也许这个库会很有用:

http://www.codeproject.com/KB/system/globalmousekeyboardlib.aspx