none
Desactivar el mouse RRS feed

Respuestas

  • Hola nirax nirax,

    Puedes hacerlo así: 

    Rectangle BoundRect;
            Rectangle OldRect = Rectangle.Empty;
    
            private void DisableMouse()
            {
                if (this.Filter == null)
                {
                    this.Filter = new MouseClickMessageFilter();
                    Application.AddMessageFilter(this.Filter);
    
                    //
                    OldRect = Cursor.Clip;
                    // Ubicación Arbitraria
                    BoundRect = new Rectangle(50, 50, 1, 1);
                    Cursor.Clip = BoundRect;
                    Cursor.Hide();
    
                }
            }
    
            private void EnableMouse()
            {
                if ((this.Filter != null))
                {
                    Application.RemoveMessageFilter(this.Filter);
                    this.Filter = null;
                }
                //
                Cursor.Clip = OldRect;
                Cursor.Show();
    
            }
    
            private MouseClickMessageFilter Filter;
    
            private const int LButtonDown = 0x201;
            private const int LButtonUp = 0x202;
            private const int LButtonDoubleClick = 0x203;
    
            public class MouseClickMessageFilter : IMessageFilter
            {
    
                public bool PreFilterMessage(ref System.Windows.Forms.Message m)
                {
                    try
                    {
                        switch (m.Msg)
                        {
                            case LButtonDown:
                            case LButtonUp:
                            case LButtonDoubleClick:
                                return true;
                            default:
                                return false;
                        }
                    }
                    catch (Exception e) { 
                        return true;
                    }
                }
            }
    

    Ejemplo de como utilizar los métodos:

            public Form1()
            {
                InitializeComponent();
                
                DisableMouse();
    
                //Aquí se crea un cronometro que reactiva el mouse después de 15 segundos
                System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
                t.Interval = 15000; // 15 segundos
                t.Tick += new EventHandler(timer_Tick);
                t.Start();
                void timer_Tick(object sender, EventArgs e)
                {
                    EnableMouse();
                    t.Stop();
                }
    
            }

    Este código:

    1. Ocultará el cursor.
    2. Hará para que no se pueda mover.
    3. Le deshabilitará los botones derecho e izquierdo.


    Espero que sea lo que estabas buscando. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    jueves, 6 de agosto de 2020 1:38
    Moderador

Todas las respuestas

  • Hola,

     

    Voy a investigar tu consulta.

     

    Saludos Cordiales

    Gabriel Castro

    jueves, 6 de agosto de 2020 0:54
    Moderador
  • Hola nirax nirax,

    Puedes hacerlo así: 

    Rectangle BoundRect;
            Rectangle OldRect = Rectangle.Empty;
    
            private void DisableMouse()
            {
                if (this.Filter == null)
                {
                    this.Filter = new MouseClickMessageFilter();
                    Application.AddMessageFilter(this.Filter);
    
                    //
                    OldRect = Cursor.Clip;
                    // Ubicación Arbitraria
                    BoundRect = new Rectangle(50, 50, 1, 1);
                    Cursor.Clip = BoundRect;
                    Cursor.Hide();
    
                }
            }
    
            private void EnableMouse()
            {
                if ((this.Filter != null))
                {
                    Application.RemoveMessageFilter(this.Filter);
                    this.Filter = null;
                }
                //
                Cursor.Clip = OldRect;
                Cursor.Show();
    
            }
    
            private MouseClickMessageFilter Filter;
    
            private const int LButtonDown = 0x201;
            private const int LButtonUp = 0x202;
            private const int LButtonDoubleClick = 0x203;
    
            public class MouseClickMessageFilter : IMessageFilter
            {
    
                public bool PreFilterMessage(ref System.Windows.Forms.Message m)
                {
                    try
                    {
                        switch (m.Msg)
                        {
                            case LButtonDown:
                            case LButtonUp:
                            case LButtonDoubleClick:
                                return true;
                            default:
                                return false;
                        }
                    }
                    catch (Exception e) { 
                        return true;
                    }
                }
            }
    

    Ejemplo de como utilizar los métodos:

            public Form1()
            {
                InitializeComponent();
                
                DisableMouse();
    
                //Aquí se crea un cronometro que reactiva el mouse después de 15 segundos
                System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
                t.Interval = 15000; // 15 segundos
                t.Tick += new EventHandler(timer_Tick);
                t.Start();
                void timer_Tick(object sender, EventArgs e)
                {
                    EnableMouse();
                    t.Stop();
                }
    
            }

    Este código:

    1. Ocultará el cursor.
    2. Hará para que no se pueda mover.
    3. Le deshabilitará los botones derecho e izquierdo.


    Espero que sea lo que estabas buscando. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    jueves, 6 de agosto de 2020 1:38
    Moderador
  • Muy bien, gracias
    martes, 11 de agosto de 2020 21:49