FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
bloquear movimiento del cursor
Saludos.
Estoy en busca de ayuda. Estoy haciendo una aplicacion en Delphi que escucha los eventos del ratón a nivel global, esto utilizando una DLL. Ya tengo la parte donde muestro que evento fue el que ocurrió, ahora lo que me interesa es que, cuando ocurra el evento WM_MOUSEMOVE o WM_NCMOUSEMOVE, mi aplicacion si detecte el evento pero el cursor no se mueva, es decir, necesito cambiar los datos de DX y DY para que los incrementos sean "0" y el cursor simplemente no se mueva. No tengo idea de como hacer esto. Hice algo similar pero para el botón derecho, poniendo una condicion IF haciendo como si nunca hubiera ocurrido ese evento. Este es el código que me funcionó. begin if (WParam = WM_RBUTTONDOWN) then begin Result := 1; exit; end; if (WParam = WM_RBUTTONUP) then begin Result := 1; exit; end; end; Pero al intentar hacer esto para bloquear el movimiento en X y Y, no se que debo hacer. Alguien me podría ayudar. Gracias. |
#2
|
||||
|
||||
No entiendo el sentido que le quieres dar a que el cursos del ratón no se mueva, eso te bloqueará las aplicaciones.
La forma mas sencilla de bloquear el ratón cuando detectas movimiento en mediante un Hook de bajo nivel rompiendo la cadena de hooks:
El problema es que te quedas bloqueado si no colocas una bandera de desbloqueo. He preparado un ejemplo sencillo en el que el bloqeuo es controlado con un Timer. Pasado el tiempo prefijado se desbloquea el ratón:
Saludos. |
#3
|
|||
|
|||
Lo que pasa es que quiero bloquear el evento de movimiento con los datos que le introdujo el raton, para posteriormente posicionar el cursor con nuevos datos.
Por ejemplo, el ratón le inyecta un dx=4 y dy=8 , esto haria "normalmente" que el cursor se moviera hacia la derecha 4 y hacia abajo 8. Bloqueo el movimiento con esos datos. ntercambio los valores ahora dx=8 y dy=4 y utilizo esos valores intercambiados para posicionar el cursor. El programa intercambia los ejes. Es por eso que quiero IGNORAR el evento de movimiento del cursor. |
#4
|
||||
|
||||
Cita:
Para eso no se si tendrías que definir un Hook a nivel global.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#5
|
|||
|
|||
Si, de hecho el código que puse es parte de la DLL. El hook lo tengo a nivel global.
Estuve tratando de probar el primer código que me pusiste pero lo único que hacia era omitir el mensaje del evento, pero el cursor sigue moviéndose. Investigué y leí que el evento WM_MOUSEMOVE solo es un mensaje de notificacion pero que no pueden controlar el cursor. El código que ando utilizando de base es el que se encuentra en la pagina de trucomania.org, en el índice de trucos, es el truco numero 414. Lo que necesito hacer para mi proyecto es: 1.- Estar listo para escuchar el evento del movimiento del ratón. 2.- Adquirir el incremento de movimiento en x y y. (necesito el movimiento relativo a la posición anterior del cursor) 3.- Omitir ese evento de movimiento. 4.- Los valores adquiridos de movimiento utilizarlos para pasarlos a un filtro digital, esto es, utilizar una ecuación donde incluya los valores de X y Y que adquirí previamente. 5.- El resultado de esta ecuacion serán 2 posiciones, X y Y nuevos. Esos datos utilizarlos para posicionar el cursor. 6.- Reiniciar el proceso Sin embargo, desde el principio tengo problemas ya que todavía no se como adquirir los incrementos. Lo que si adquiere es la posicion del cursor, sin embargo estas son coordenadas absolutas respecto a la pantalla, pero yo lo que necesito son los incrementos de posicion. Y una vez adquiridos los incrementos, necesitaría omitir, ignorar o bloquear ese evento de tal modo que el cursor no responda al evento de movimiento. Tendrás alguna idea de por donde debo buscar, es que ya llevo como 1 semana sin obtener resultados y no creo que no se pueda hacer. Hay un proyecto llamado SteadyMouse que hace algo como lo que quiero hacer. Pero no tengo idea de como lo hizo y yo creo que tengo que utilizar los Hooks. Gracias por tu ayuda y espero tu respuesta haber si puedes orientarme con esto. =) |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Detección de movimiento | Peregrino | Gráficos | 8 | 14-02-2008 05:27:45 |
Movimiento por la paz | gluglu | La Taberna | 0 | 31-01-2007 13:26:13 |
Ocultar movimiento cursor en dbGRid al recorrer TQuery. | setry2 | Conexión con bases de datos | 2 | 23-03-2005 15:19:02 |
Algoritmo de movimiento | Antigol | Varios | 16 | 23-12-2003 12:04:42 |
Movimiento de Form | ChristianS | Varios | 2 | 04-06-2003 16:57:40 |
|