elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Cifrar documentos-carpetas con GnuPG en Linux y Windows


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Eventos Ratón C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Eventos Ratón C#  (Leído 10,654 veces)
kargarof

Desconectado Desconectado

Mensajes: 13



Ver Perfil
Eventos Ratón C#
« en: 2 Julio 2008, 08:55 »

Tengo un problemilla, utilizo un OCR para sacar información de un documento de identidad escaneado.

El funcionamiento es el siguiente, selecciono la imagen por medio de un openDialog (aunque ya he conseguido que acceda a la carpeta automaticamente y la seleccione sola) y le paso el OCR (también lo hace solo), pero el problema viene aquí. Debo seleccionar la zona donde se encuentra el texto haciendo una selección con el ratón, pero claro, esto lo hago a mano y necesito que sea automatico, ya tngo las coordenadas y el grosos que debe de poseer la selección pero no se como emular el comportamiento del ratón.

Utilizo VS C#.Net Framework 1.1

Gracias a todos de antemano.


« Última modificación: 2 Julio 2008, 08:58 por kargarof » En línea

MANULOMM


Desconectado Desconectado

Mensajes: 559


Erepublik.com


Ver Perfil
Re: Eventos Ratón C#
« Respuesta #1 en: 2 Julio 2008, 17:43 »

hola, pues con un evento propiamente no podes mover el mouse, los eventos responden a las acciones propias de la pesonar, lo que tenes que hacer es buscar la api para mover el mouse y ya veras te miras lo de las coordenadas.


Atentamente,

Juan Manuel Lombana
Medellín - Colombia


En línea


kargarof

Desconectado Desconectado

Mensajes: 13



Ver Perfil
Re: Eventos Ratón C#
« Respuesta #2 en: 2 Julio 2008, 18:46 »

Ok, muchas gracias. Me miraré algunas webs a ver si encuentro algo que me sirva.

De todos modos si alguien sabe de alguna o me la puede facilitar lo agradecería.
En línea

MANULOMM


Desconectado Desconectado

Mensajes: 559


Erepublik.com


Ver Perfil
Re: Eventos Ratón C#
« Respuesta #3 en: 3 Julio 2008, 04:52 »

Hola, te paso una info que encontre...(Porcierto deberias pasar la solucion al Framework 2.0 pues el 1.1 esta obsoleto.)
Código:
//Codigo Probado en VS 2008 (Framwork 2.0 y 3.5) y en SharpDevelop 1.1 (Framework 1.1)
            //Hacer este using.
            using System.Windows.Forms;

            int x = 10;
            int y = 50;
            this.Cursor = new Cursor(Cursor.Current.Handle);
            Cursor.Position = new Point(x, y);

Por Cierto Con la API seria Asi

Código:
//Agregas este using.
using System.Runtime.InteropServices;

public class Form1 : Form
{
               [DllImport("User32.dll")]
               public static extern bool SetCursorPos(int x, int y);

void Button1Click(object sender, System.EventArgs e)
{
                        //Este metodo mueve el cursor en X(parametro1) y en Y(parametro2)
SetCursorPos(50,50);
}
}
si no entiendes algo BUSCA EN GOOGLE... jejeje, si algo posteas....

Atentamente,

Juan Manuel Lombana
Medellín - Colombia
« Última modificación: 3 Julio 2008, 04:55 por MANULOMM » En línea


kargarof

Desconectado Desconectado

Mensajes: 13



Ver Perfil
Re: Eventos Ratón C#
« Respuesta #4 en: 3 Julio 2008, 09:34 »

Lo primero si lo tenia claro, el mayor problema viene cuando quiero desplazarlo pero simulando que no suelto el botón de un punto a otro, no se si llego a explicarme.  Con las API's me peleo bastante y no termino de pillarle el truco, si pudieras ser más claro  :P. Gracias por la ayuda.
« Última modificación: 3 Julio 2008, 10:14 por kargarof » En línea

kargarof

Desconectado Desconectado

Mensajes: 13



Ver Perfil
Re: Eventos Ratón C#
« Respuesta #5 en: 3 Julio 2008, 17:46 »

Bueno rebuscando y rebuscando, he encontrado algo que se supone realiza lo que yo busco pero como todo en esta vida, no sale del todo bien.

Tengo lo siguiente:

Código:
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern int mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);

y una función:

Código:
public void Raton()
{
      mouse_event(MOUSEEVENTF_LEFTDOWN, 425, 330, 0, 0);
      mouse_event(MOUSEEVENTF_LEFTUP, 975, 345, 0, 0);
}

Y el problema es:

Una llamada a la función PInvoke 'DocumentProcessing1!DocumentProcessing.Form1::mouse_event' impidió la correspondencia de la pila. Es posible que la razón sea que la firma PInvoke administrada no coincida con la firma de destino no administrada. Compruebe que la convención y los parámetros de llamada de la firma PInvoke coinciden con la firma no administrada de destino.

Le he dado vueltas y vueltas y nada. Si alguein supiera porque...

He conseguido que el problema desaparezca cambiando los "long" por "int", pero ahora no me funciona el
Código:
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x, y, 0, 0);
« Última modificación: 3 Julio 2008, 18:34 por kargarof » En línea

MANULOMM


Desconectado Desconectado

Mensajes: 559


Erepublik.com


Ver Perfil
Re: Eventos Ratón C#
« Respuesta #6 en: 3 Julio 2008, 18:52 »

debes hacer la conversion en la invocacion a long
osea
Código:
mouse_event((long)MOUSEEVENTF_LEFTDOWN, 425, 330, 0, 0);

el error es que no coincide el envio de parametros con lo que la funcion espera (PInvoke)

Atentamente,

Juan Manuel Lombana
Medellín - Colombia
En línea


kargarof

Desconectado Desconectado

Mensajes: 13



Ver Perfil
Re: Eventos Ratón C#
« Respuesta #7 en: 4 Julio 2008, 11:22 »

Bueno creo que di con la tecla:

Código:
[DllImport("user32")]
public static extern int SetCursorPos(int x, int y);
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);

public void ClickPoint(int x, int y)
{
Cursor.Position = new Point(x, y);
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_MOVE, 170, 7, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);
}

Solo me queda perfilarlo y ponerlo bonito. Gracias por la info Manulomm.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Eventos « 1 2 »
.NET (C#, VB.NET, ASP)
TheGhost(Z) 11 3,561 Último mensaje 19 Enero 2011, 12:59
por [D4N93R]
VBS no funciona guarda eventos
Scripting
pabluria 4 1,642 Último mensaje 22 Febrero 2011, 02:09
por pabluria
links y eventos
Desarrollo Web
bomba1990 2 1,108 Último mensaje 4 Mayo 2011, 04:45
por bomba1990
Eventos del sistema de hoy
Scripting
pabluria 0 731 Último mensaje 28 Septiembre 2011, 16:15
por pabluria
Eventos de ratón y cuadros de texto en Java
Java
niano 1 295 Último mensaje 5 Julio 2019, 10:25
por niano
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines