Pregunta
Estoy tratando de utilizar AutoIt con Ruby. Hay algunas funciones definidas por el usuario en AutoIt que necesito para mi automatización Gui como el acceso a la pestaña de ventana, etc. El problema es que a diferencia de las API de AutoIt normales no soy capaz de acceder a las UDF del autoit desde el controlador de objetos win32ole rubí para autoit DLL . ¿Hay alguna manera de acceder a estas UDF en mi código de Ruby? Estas son en realidad algunas de las funciones definidas en los scripts de AutoIt y creo que lo que yo quiero no es posible. Quiero un poco de la opinión de alguien que pudo haber intentado esto antes y llegó a una conclusión.
Gracias y saludos, Anjali
Solución
No se puede hacer, de acuerdo con la foro autoit . Supongo que tendrá que volver a escribir la UDF en Ruby.
Otros consejos
Reescribiendo las UDF en Ruby es una solución simple. Sin embargo, esto no es una solución en todos los casos debido a la cantidad de trabajo necesario. No hay manera directa para llamar a funciones de AutoIt desde Ruby, porque no hay manera de que se puede compilar AutoIt a un DLL o COM o similar.
Lo que puede hacer es volver a escribir sus UDF AutoIt para permitir la comunicación entre procesos. Usted puede hacer ya sea esta a través de parámetros de línea de comandos:
If $CmdLine[0] > 1 Then
Switch $CmdLine[1]
Case "/1"
Method1()
Case "/2"
Method2()
EndSwitch
EndIf
Func Method1()
ConsoleWrite("This is the 1st Method" & @CRLF)
EndFunc
Func Method2()
ConsoleWrite("This is the 2nd Method" & @CRLF)
EndFunc
compilar la secuencia de comandos como un CUI (marque la opción en el compilador AutoIt) y luego se ejecuta desde Ruby. A continuación, puede tomar la salida a través de flujos estándares. Alternativamente, se puede escribir la salida de la secuencia de comandos en un archivo en el disco, a continuación, utilizar Ruby a leer el contenido del archivo.
Otras opciones para una comunicación más no tradicional entre procesos incluyen:
- procesadores de mensajes: http://www.autoitscript.com/forum/topic/106710 -mailslot /
- _SendMessage: Deje que el script de AutoIt enviar un mensaje de ventanas a una ventana creada en Ruby
- Creación de un servidor Telnet en AutoIt, enviar y recibir comandos a través de TCP: http://www.autoitscript.com/forum/topic/123713-simple-telnet-server-skeleton-with-authentication/
- HTTP del servidor, si usted está buscando una comunicación más sin estado o desde la Web: Buscar AutoIT HTTP Server en Google. protección contra el spam para los nuevos usuarios me impide publicar el enlace.
Las posibilidades son infinitas. :) Este post debería empezar.