从Ruby访问autoit UDF

时间:2011-01-13 11:14:27

标签: ruby autoit

我正在尝试使用Ruby与Autoit。在Autoit中有一些用户定义的函数,我需要我的Gui自动化,如窗口选项卡访问等。问题是,与普通的autoit API不同,我无法从rubit win32ole对象句柄访问autoit的UDF的autoFll 。 有没有办法在我的Ruby代码中访问这些UDF? 这些实际上是autoit脚本中定义的一些函数,我认为我想要的是不可能的。我想要一些可能曾经尝试过这个并得出一些结论的人的意见。

谢谢和问候, 安贾利

2 个答案:

答案 0 :(得分: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运行它。然后,您可以通过标准流获取输出。或者,您可以将脚本的输出写入磁盘上的文件,然后使用Ruby读取文件的内容。

更多非传统进程间通信的其他选项包括:

可能性是无穷无尽的。 :)这篇文章应该让你开始。

答案 1 :(得分:0)

根据autoit forum,无法完成。我想你必须用Ruby重写UDF。