Autor
|
Tema: Eventos Ratón C# (Leído 12,706 veces)
|
kargarof
Desconectado
Mensajes: 13
|
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 am por kargarof »
|
En línea
|
|
|
|
MANULOMM
Desconectado
Mensajes: 559
Erepublik.com
|
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
Mensajes: 13
|
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
Mensajes: 559
Erepublik.com
|
Hola, te paso una info que encontre...(Porcierto deberias pasar la solucion al Framework 2.0 pues el 1.1 esta obsoleto.) //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 //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 am por MANULOMM »
|
En línea
|
|
|
|
kargarof
Desconectado
Mensajes: 13
|
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 . Gracias por la ayuda.
|
|
« Última modificación: 3 Julio 2008, 10:14 am por kargarof »
|
En línea
|
|
|
|
kargarof
Desconectado
Mensajes: 13
|
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:[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: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 mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x, y, 0, 0);
|
|
« Última modificación: 3 Julio 2008, 18:34 pm por kargarof »
|
En línea
|
|
|
|
MANULOMM
Desconectado
Mensajes: 559
Erepublik.com
|
debes hacer la conversion en la invocacion a long osea 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
Mensajes: 13
|
Bueno creo que di con la tecla: [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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Eventos
« 1 2 »
.NET (C#, VB.NET, ASP)
|
TheGhost(Z)
|
11
|
6,465
|
19 Enero 2011, 12:59 pm
por [D4N93R]
|
|
|
VBS no funciona guarda eventos
Scripting
|
pabluria
|
4
|
2,890
|
22 Febrero 2011, 02:09 am
por pabluria
|
|
|
links y eventos
Desarrollo Web
|
bomba1990
|
2
|
2,323
|
4 Mayo 2011, 04:45 am
por bomba1990
|
|
|
Eventos del sistema de hoy
Scripting
|
pabluria
|
0
|
1,701
|
28 Septiembre 2011, 16:15 pm
por pabluria
|
|
|
Eventos de ratón y cuadros de texto en Java
Java
|
niano
|
1
|
2,085
|
5 Julio 2019, 10:25 am
por niano
|
|