如何避免鼠标移动10秒

时间:2014-05-19 07:17:18

标签: c# winforms user32

我使用User32.dll,运行应用程序,按下按钮获取信息。

我的问题是当我提取一些数据时,但是当我将鼠标移到特定元素上时它可以停止这个过程,播种我需要将鼠标移动到安全的地方并让它在那里停留2秒。

我找到了将它移到安全地方的方法

Cursor.Position = new System.Drawing.Point(3000, 0);

但我如何让它停留在那里/停止移动2秒..

1 个答案:

答案 0 :(得分:1)

你可以制作一个循环代码的计时器: Cursor.Position = new System.Drawing.Point(3000, 0);

但这样效率低下。 所以我建议让你的表单实现IMessageFilter。

然后将以下代码添加到表单中:

Rectangle BoundRect;
Rectangle OldRect = Rectangle.Empty;

private void EnableMouse()
{
    Cursor.Clip = OldRect;
    Cursor.Show();
    Application.RemoveMessageFilter(this);
}
public bool PreFilterMessage(ref Message m)
{
    if (m.Msg == 0x201 || m.Msg == 0x202 || m.Msg == 0x203) return true;
    if (m.Msg == 0x204 || m.Msg == 0x205 || m.Msg == 0x206) return true;
    return false;
}
private void DisableMouse()
{
    OldRect = Cursor.Clip;
    // Arbitrary location.
    BoundRect = new Rectangle(50, 50, 1, 1); 
    Cursor.Clip = BoundRect;
    Cursor.Hide();
    Application.AddMessageFilter(this);
}  

这将隐藏光标,使其无法移动它并禁用鼠标右键和左键。