Fuerza Bruta

17/05/2007 - 21:29 por Pablo Guevara | Informe spam
Amigos,

Me piden automatizar un proceso de registro de datos en un sistema, la idea
es hacer un programa que simule la digitacion en una aplicacion externa.

¿Alguien sabe por donde puedo iniciar la busqueda de esta solucion?

Gracias.

Pablo

+++

Preguntas similare

Leer las respuestas

#1 Diego Jancic
18/05/2007 - 01:31 | Informe spam
Hola,
Podes usar SendKeys para enviar cosas por el teclado:
http://msdn2.microsoft.com/es-es/li...s.sendkeys(VS.80).aspx

Y para usar el mouse es un poco mas complejo porque tenes que recurrir
a las apis en algunos casos...
Para saber o setear la posicion del cursor, podes usar
Cursor.Position, y para hacer un click te mando una clase completa que
lo hace (la pego abajo).

Espero que sea eso lo que necesitas..

Saludos!,
Diego



using System;
using System.Runtime.InteropServices;

namespace Cedev.UI.Windows.Utils
{
public class MouseEvents
{
private MouseEvents()
{
}

[DllImport("User32.dll", SetLastError = true)]
private static extern int SendInput(int nInputs, ref INPUT pInputs,
int cbSize);

//mouse event constants
private const int MOUSEEVENTF_LEFTDOWN = 2;
private const int MOUSEEVENTF_LEFTUP = 4;
//input type constant
private const int INPUT_MOUSE = 0;

private struct MOUSEINPUT
{
public int dx;
public int dy;
public int mouseData;
public int dwFlags;
public int time;
public IntPtr dwExtraInfo;
}

private struct INPUT
{
public uint type;
public MOUSEINPUT mi;
}

public static void SendClick()
{
INPUT i = new INPUT();
i.type = INPUT_MOUSE;
i.mi.dx = 0;
i.mi.dy = 0;
i.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
i.mi.dwExtraInfo = IntPtr.Zero;
i.mi.mouseData = 0;
i.mi.time = 0;
//send the input
SendInput(1, ref i, Marshal.SizeOf(i));
//set the INPUT for mouse up and send it
i.mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(1, ref i, Marshal.SizeOf(i));
}
}
}
Respuesta Responder a este mensaje
#2 Pablo Guevara
23/05/2007 - 01:19 | Informe spam
Diego,

Muchas gracias, pero en lo que entendi, el SendKeys solo envia pulsaciones a
la aplicacion local, lo que necesitaria es enviar las pulsaciones a otra
aplicacion.

Es parecido a lo que hacen los programas de dictado, en los que puedes
interactuar con cualquier otra aplicacion.

Slds.

Pablo

+++
"Diego Jancic" escribió en el mensaje
news:
Hola,
Podes usar SendKeys para enviar cosas por el teclado:
http://msdn2.microsoft.com/es-es/li...s.sendkeys(VS.80).aspx

Y para usar el mouse es un poco mas complejo porque tenes que recurrir
a las apis en algunos casos...
Para saber o setear la posicion del cursor, podes usar
Cursor.Position, y para hacer un click te mando una clase completa que
lo hace (la pego abajo).

Espero que sea eso lo que necesitas..

Saludos!,
Diego



using System;
using System.Runtime.InteropServices;

namespace Cedev.UI.Windows.Utils
{
public class MouseEvents
{
private MouseEvents()
{
}

[DllImport("User32.dll", SetLastError = true)]
private static extern int SendInput(int nInputs, ref INPUT pInputs,
int cbSize);

//mouse event constants
private const int MOUSEEVENTF_LEFTDOWN = 2;
private const int MOUSEEVENTF_LEFTUP = 4;
//input type constant
private const int INPUT_MOUSE = 0;

private struct MOUSEINPUT
{
public int dx;
public int dy;
public int mouseData;
public int dwFlags;
public int time;
public IntPtr dwExtraInfo;
}

private struct INPUT
{
public uint type;
public MOUSEINPUT mi;
}

public static void SendClick()
{
INPUT i = new INPUT();
i.type = INPUT_MOUSE;
i.mi.dx = 0;
i.mi.dy = 0;
i.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
i.mi.dwExtraInfo = IntPtr.Zero;
i.mi.mouseData = 0;
i.mi.time = 0;
//send the input
SendInput(1, ref i, Marshal.SizeOf(i));
//set the INPUT for mouse up and send it
i.mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(1, ref i, Marshal.SizeOf(i));
}
}
}

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida