Activar mouse en modo de consola

New product

Como utilizar el raton en modo de consola en NET Framework usando c# y VB.net . Facil de implementar.

Activar mouse en modo de consola

He visto muchas aplicaciones de consola en mi vida, y realmente la mayoría trabaja como una terminal de comandos, algo así como el MS-DOS antiguo. Entonces decidí, porque no darle un poco de mayor interactividad a la consola del NET Framework dotándola del manejo de ratón. Así que entonces, nació este artículo.

Publicidad.

En este articulo les muestro como activar el ratón en la consola de NET para que lo puedan usar en sus proyectos. Por su puesto, lo programe en VB.NET y en C# para el provecho de todos.

Por su puesto, la plataforma de NET no trae nativamente el manejo del ratón o mouse, así que para ello hay que enganchar un hook chain, en este caso uno del tipo que controle los mensajes de sistema proveniente del ratón.

Para esto usamos los siguientes llamados a API:

> SetWindowsHookEx

> UnhookWindowsHookEx

> CallNextHookEx

> LowLevelMouseProc

Los procedimientos para enganche se describen en la ayuda de C++ para el procedimiento MouseProc.

Ir a la ayuda C++

El procedimiento de retro llamada MouseProc debe ser ajustado con la variable WH_MOUSE_LL para que se logren capturar todos los eventos de la cola de la interfaz del mouse.

Consideraciones al utilizar el hook chain.

Programar muy bien el procedimiento de CallBack para que deje pasar los demás mensajes de sistema. Si no se hace, podemos bloquear o hacer inestables los programas por unos instantes hasta que el sistema reconozca error en el contexto y lo cierre. Así que depurar aplicaciones NET con enganches de Hook es muy problemático.

Es mejor trabajar sin el hook chain mientras se pulen detalles y luego activarlos para no perder tiempo entre bloqueos de aplicación.

Otra cosa importante es usar solo el hook que necesitemos para no complicar el programa. Recuerden que se está tomando el control del S. O. en muy bajo nivel, entonces requiere que estemos muy seguro de lo que estamos haciendo.

Lo otro es que la información dada por el canal de enganche al ratón esta pura. Es decir, las coordenadas del ratón, los botones, y todo esta referenciado al S. O. Es nuestra responsabilidad ajustarla al contexto de nuestro programa. Como por ejemplo llamar a:

> GetModuleHandle

> GetWindowRect

Estos dos para obtener la información de contexto y coordenadas de pantalla de la consola que no esta implementada en NET Framework.

Clase CtrlRaton

Puedes leer la ayuda del C++ que te dejé arriba para entender el proceso de un hook Chain, pero ya el trabajo de programación lo realicé en la clase CtrlRaton.

Allí podemos enganchar y des enganchar sin problemas el control de bajo nivel del mouse y obtener de forma segura las variables del mismo ajustadas al contexto de nuestra aplicación de consola.

Esta clase como mencione, está programada en VB.NET y en C#.

Publicidad.

Descargar recursos ctrlRaton

Como usar CtrlRaton

Iniciar el Hook

Para iniciar y engancharlo al contexto actual, solo debe de llamar a:

CtrlRaton.Iniciar_Hook()

Finalizar el Hook

CtrlRaton.Detener_Hook()

Información del ratón:

Botón izquierdo: CtrlRaton.MouseLButton

Botón Derecho: CtrlRaton.MouseRButton

Rueda del ratón: CtrlRaton.MouseWheel (Es un valor que luego de leer se hace cero.)

Posicion del ratón dentro de la ventana:

CtrlRaton.MouseXposChar

CtrlRaton.MouseYposChar

Eventos

No le programé eventos.

Aplicación de demostración para el CtrlRaton.

El programa es sencillo, solo muestra las coordenadas en caracteres del ratón, que botón esta presionado y el comportamiento de la rueda.

ctrlraton ventana de consola

Añadí una funcionabilidad adicional a manera de ejemplo de como usar la interfaz de ratón.

Publicidad.

 

Un video de como lo hice

Preguntas o sugerencias

Abajo en el cuadro de texto.

 

 

Calificación 
22/03/2020

Excelente

Gran post

    ¡Escriba su propia reseña!

    Escriba una reseña

    Activar mouse en modo de consola

    Activar mouse en modo de consola

    Como utilizar el raton en modo de consola en NET Framework usando c# y VB.net . Facil de implementar.

    Haz una pregunta

    No se requiere registro

    Si luego de leer nuestro articulo aun tiene dudas, puede hacer su pregunta utilizando el siguiente formulario.

    (Opcional)
    *(Requerido para ser notificado cuando la respuesta este disponible)

    Si el enlace de descarga redirige a otro producto que no es el descrito en el artículo o está roto, reportarlo usando nuestro

     FORMULARIO DE REPORTE