Estoy haciendo un bot para un juego Flash, y he descubierto cómo importar todas las funciones AutoIt en mi código C#.Enviando mensajes a un juego Flash con C# y AutoIt
string title = "Minesweeper";
string full = auto.WinGetTitle(title,"");
string handle = auto.WinGetHandle(full, "");
if (auto.WinExists(full, "") == 1)
textBox1.Text = "window exists";
addressBox.Text = full;
for (int r = 1; r < 40; r++)
{
auto.ControlClick(full, "", "", "left", 2, r * 10, r * 10);
//auto.ControlClick(handle, "", "", "left", 2, r * 10, r * 10);
}
(estoy bastante seguro de la descomentada debe ser el que tenga el mango y viceversa, pero esto funciona para Minesweeper.)
Así funciona para Buscaminas y no requiere que sea la ventana activa. Cuando trato de hacerlo funcionar en mi juego Flash, se requiere que la ventana del Explorador de Internet sea la activa. ¿Esto es algo que requiere Flash o hay algo adicional que podría hacer para que funcione cuando el juego se minimiza?
Esto no tiene que hacerse con las importaciones de AutoIt. Intenté SendMessage desde user32 en un punto también, pero eso no funcionó en absoluto para el contenido Flash.
Acabo de probar esto en un sitio web al azar en lugar de un sitio Flash o Buscaminas y por alguna razón el código funciona si lo ejecuto desde el programa de secuencias de comandos AutoIt, pero no de mi programa en C# ...
20 de junio de 2012: Estoy bastante seguro de que esto tiene algo que ver con la forma en que se pasa el mango. He hecho algunas pruebas llamando a un archivo EXE de AutoIt y usando el identificador que obtengo del código C# como argumento, tengo que agregarle un 0x
, y también dentro del código AutoIt tengo que convertirlo de una cadena a un HWnd, por lo que podría ser algo, en cuyo caso no sé qué hacer ya que la función importada se basa en una entrada de cadena para el manejador.
¿Cómo exportó funciones autoit a C#? Tengo curiosidad. –
http://www.lancelarsen.com/Blog/tabid/72/EntryId/48/AutoIt-C-Helper-Library.aspx Hay un sitio con recursos donde alguien ha realizado una clase importando las funciones de la biblioteca DLL. Pero creo que si solo incluye la biblioteca, no necesariamente necesita usar esa clase que creó. Lo digo porque su clase de ayuda no incluye todas las funciones como importaciones pero de todos modos puede acceder a todos los métodos de autoit. –