2011-01-13 123 views
1

我想用Ruby來使用Autoit。在Autoit中有一些用戶定義的函數,我需要爲我的GUI自動化,比如窗口選項卡訪問等。問題是,與普通的autoit API不同,我無法訪問autoit的自動函數的UDF從win32ole對象處理autoit dll 。 有什麼方法可以在我的Ruby代碼中訪問這些UDF? 這些實際上是在自動腳本中定義的一些函數,我認爲我想要的是不可能的。我想從某個可能已經嘗試過的人那裏得到一些意見,並得出一些結論。從Ruby訪問autoit UDF

感謝和問候, 綜合外電

回答

2

在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讀取文件的內容。

更多非傳統的進程間通信的其他選項包括:

可能性是無止境的。 :)這篇文章應該讓你開始。