我想用Ruby來使用Autoit。在Autoit中有一些用戶定義的函數,我需要爲我的GUI自動化,比如窗口選項卡訪問等。問題是,與普通的autoit API不同,我無法訪問autoit的自動函數的UDF從win32ole對象處理autoit dll 。 有什麼方法可以在我的Ruby代碼中訪問這些UDF? 這些實際上是在自動腳本中定義的一些函數,我認爲我想要的是不可能的。我想從某個可能已經嘗試過的人那裏得到一些意見,並得出一些結論。從Ruby訪問autoit UDF
感謝和問候, 綜合外電
我想用Ruby來使用Autoit。在Autoit中有一些用戶定義的函數,我需要爲我的GUI自動化,比如窗口選項卡訪問等。問題是,與普通的autoit API不同,我無法訪問autoit的自動函數的UDF從win32ole對象處理autoit dll 。 有什麼方法可以在我的Ruby代碼中訪問這些UDF? 這些實際上是在自動腳本中定義的一些函數,我認爲我想要的是不可能的。我想從某個可能已經嘗試過的人那裏得到一些意見,並得出一些結論。從Ruby訪問autoit UDF
感謝和問候, 綜合外電
它不能完成,根據autoit forum。我想你必須重寫Ruby中的UDF。
在Ruby中重寫UDF是一個簡單的解決方案。但是,由於涉及的工作量多,這不是所有情況下的解決方案。沒有直接的方法來從Ruby調用AutoIt函數,因爲沒有辦法可以將AutoIt編譯爲dll或COM或類似的。
您可以做的是重寫您的AutoIt UDF以啓用進程間通信。您可以通過命令行參數做到這一點:
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
您編譯上面的腳本作爲CUI(檢查AutoIt的編譯器選項),然後從紅寶石運行它。然後您可以通過標準流獲取輸出。或者,您可以將腳本的輸出寫入磁盤上的文件,然後使用Ruby讀取文件的內容。
更多非傳統的進程間通信的其他選項包括:
可能性是無止境的。 :)這篇文章應該讓你開始。