Pregunta

Estoy creando un bot para un juego Flash y descubrí cómo importar todos los AutoIt funciones en mi código C#.

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 que el que no está comentado debería ser el que tiene asa y viceversa, pero esto funciona para Dragaminas.)

Por lo tanto, funciona para Buscaminas y no requiere que sea la ventana activa.Cuando intento que funcione en mi juego Flash, es necesario que la ventana de Internet Explorer sea la activa.¿Es esto algo que requiere Flash o hay algo adicional que podría hacer para que funcione cuando el juego está minimizado?

Esto no tiene que hacerse utilizando las importaciones de AutoIt.Lo intenté Enviar mensaje de user32 en un momento también, pero eso no funcionó en absoluto para el contenido Flash para mí.

Acabo de probar esto en un sitio web aleatorio 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 desde mi programa C#...

20 de junio de 2012:Estoy bastante seguro de que esto tiene algo que ver con la forma en que se pasa el identificador.Hice algunas pruebas llamando a un archivo AutoIt EXE y usando el identificador que obtengo del código C# como argumento, tengo que agregar un 0x a él, y también luego 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 manejar.

¿Fue útil?

Solución

Algo que puede intentar descartar problemas de manejo de ventana y manejo de variables. No debería haber necesidad de usar WinGetTitle el & "; Buscaminas &"; El título de la ventana debería funcionar bien. De acuerdo con mi herramienta de información de ventana AutoIt v3 en Windows 7, el título y la clase de la ventana Buscaminas son ambos Buscaminas. Tan difícil de codificar

  

auto.ControlClick (" [TITLE: Buscaminas;   CLASE: Buscaminas], & Quot; & Quot ;, & Quot; & Quot ;, & Quot; izquierda & Quot ;, 2,   r * 10, r * 10);

podría funcionar. Para obtener más información sobre cómo funciona, consulte Descripciones avanzadas de ventanas en el archivo de ayuda de AutoIt. Si esto todavía no funciona, busque WinTitleMatchMode en el archivo de ayuda. Le permite configurar algunas reglas de clemencia en la coincidencia de títulos de ventanas que podrían facilitarle la tarea.

AutoIt X es la versión de control DLL / COM de AutoIt, así es como agregaría AuotIt a cualquier idioma que tenga soporte para DLL / COM. En caso de que alguien más se preguntara cómo usaría AutoIt en C # . Desafortunadamente, AutoIt X a menudo va a la zaga en el desarrollo y las pruebas del idioma principal. Aunque no tengo ninguna razón para pensar que su problema es causado por un error que solo proporciona algunos antecedentes sobre el proyecto AutoItX. Si aún no lo ha hecho, debe publicar una copia de esta pregunta en ActiveX / Foro de Ayuda y Soporte COM (AutoItX) . Una de las mejores cosas de AutoIt en mi experiencia a lo largo de los años es la comunidad (que no se ha mudado mucho aquí). Esa sección del foro en particular es frecuentada por algunos de los desarrolladores del lenguaje que estarán encantados de ayudar.

En cuanto a su nota del 20 de junio , AutoIt trata todas las variables como cadenas hasta que detecta que es algo especial. No sabe que un valor es hexadecimal a menos que comience con el 0x que mencionó. Esto me ha causado todo tipo de problemas extraños en el pasado. En varias ocasiones tuve que agregar cero a una variable para que AutoIt la evaluara correctamente después. Esto no sucede a menudo con AutoIt3, sino algo a tener en cuenta.

Si necesita algún código de referencia de AutoIt, muchos miembros del El foro de AutoIt ha creado bots de buscaminas que puedes consultar y posiblemente ver algo útil. p>

Otros consejos

Asegúrese de ejecutar su programa C # como administrador. Esta es la única diferencia que puedo ver para un método que funciona y el otro no.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top