在c#中完全禁用鼠标移动和点击

Tha*_*erd 10 c# mouse

在工作中,我是一名教练.我正在上课,教人们如何在没有鼠标的情况下"做东西"...曾见过人们点击"登录"文本框,键入,抓住鼠标,单击"密码",输入密码,然后再次抓取鼠标单击下方的"连接"按钮?

所以我会教他们如何在没有鼠标的情况下做到这一切(当然还有很多其他事情)

在课程结束时,我会让他们通过一种考试.

所以我正在构建一个基于向导的小应用程序,其中我提供了一些类似实例的表单填写,但我想在他们进行此测试时以编程方式禁用他们的鼠标.

但是,在向导中,我将不得不让他们再次使用鼠标.

是否有一种 - 可能很简单 - 暂时禁用鼠标的方法,并在以后重新启用它?

我正在使用C#2.0,在VC#2k5下进行编程,如果这很重要的话

Han*_*son 8

使表单实现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);
    }  
Run Code Online (Sandbox Code Playgroud)

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