New product
This product is no longer in stock
Availability date:
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.Recipient :
* Required fields
or Cancel
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.
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.
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.
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.
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.
El programa es sencillo, solo muestra las coordenadas en caracteres del ratón, que botón esta presionado y el comportamiento de la rueda.
Añadí una funcionabilidad adicional a manera de ejemplo de como usar la interfaz de ratón.
Publicidad.
Preguntas o sugerencias
Abajo en el cuadro de texto.
Escrito por:
Alfredo G.
Al-Proyecto.
Excelente
Gran post
NO registration required!
If the question you have has not yet been answered here, use the form below to ask something about this addon.
If the download link redirects to another product that is not described in the article or is broken, report it using our Reporting Form