Domanda
Sto cercando di utilizzare Autoit con Ruby. Ci sono alcune funzioni definite dall'utente in Autoit di cui ho bisogno per la mia automazione Gui come la scheda della finestra di accesso ecc Il problema è che a differenza dei normali API AutoIt non sono in grado di accedere ai UDF del autoit dal rubino win32ole maniglia oggetto per AutoIt dll . C'è un modo di accedere a questi UDF nel mio codice Ruby? Questi sono in realtà alcune funzioni definite negli script AutoIt e penso che quello che voglio non è possibile. Voglio qualche parere da qualcuno che può aver provato prima ed è venuto a qualche conclusione.
Grazie e saluti, Anjali
Soluzione
Non si può fare, secondo il autoit forum . Credo che si dovrà riscrivere l'UDF in Ruby.
Altri suggerimenti
Riscrivere le UDF in Ruby è una soluzione semplice. Tuttavia, questa non è una soluzione in tutti i casi, a causa della quantità di lavoro coinvolti. Non v'è alcun modo diretto per richiamare le funzioni AutoIt da Ruby, perché non c'è modo che è possibile compilare AutoIt a un dll o COM o simili.
Che cosa si può fare è riscrivere l'UDF AutoIt per consentire la comunicazione tra processi. Si sia possibile farlo attraverso i parametri della riga di comando:
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
È compilare lo script precedente come CUI (selezionare l'opzione nel compilatore AutoIt) e poi eseguirlo da Ruby. È quindi possibile prendere l'uscita tramite flussi standard. In alternativa, è possibile scrivere l'output dello script in un file sul disco, quindi utilizzare Ruby per leggere il contenuto del file.
Altre opzioni per la comunicazione tra processi più non tradizionali includono:
- mailslots: http://www.autoitscript.com/forum/topic/106710 -mailslot /
- _SendMessage: Lasciate che lo script AutoIt inviare un messaggio finestre per una finestra creata in Ruby
- Creazione di un server Telnet in AutoIt, inviare e ricevere comandi tramite TCP: http://www.autoitscript.com/forum/topic/123713-simple-telnet-server-skeleton-with-authentication/
- HTTP server, se siete alla ricerca di una comunicazione più senza stato o dal Web: Ricerca Autoit HTTP Server su Google. Protezione anti-spam per i nuovi utenti mi impedisce di postare il link.
Le possibilità sono infinite. :) Questo post dovrebbe iniziare.