1

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

谢谢和问候, 安贾利

4

2 回答 2

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 读取文件的内容。

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

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

于 2011-02-09T09:00:16.487 回答
0

根据autoit 论坛的说法,它无法完成。我猜你必须用 Ruby 重写 UDF。

于 2011-01-13T14:47:44.687 回答