Activate mouse in CS and VB.NET console window

New product

How to use the mouse in console mode in NET Framework using c # and VB.net. Easy to implement.

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.

Grade 
03/22/2020

Excelente

Gran post

    Write your review!

    Write a review

    Activate mouse in CS and VB.NET console window

    Activate mouse in CS and VB.NET console window

    How to use the mouse in console mode in NET Framework using c # and VB.net. Easy to implement.

    Ask a question

    NO registration required!

    If the question you have has not yet been answered here, use the form below to ask something about this addon.

    (optional)
    *(Required to be notified when an answer is available)

    If the download link redirects to another product that is not described in the article or is broken, report it using our Reporting Form