【问题标题】:Access autoit UDF from Ruby从 Ruby 访问 autoit UDF
【发布时间】:2011-01-13 11:14:27
【问题描述】:

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

感谢和问候, 安贾利

【问题讨论】:

    标签: ruby autoit


    【解决方案1】:

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

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

    可能性无穷无尽。 :) 这篇文章应该可以帮助您入门。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-02
        • 1970-01-01
        • 1970-01-01
        • 2011-07-27
        • 1970-01-01
        • 1970-01-01
        • 2018-04-17
        相关资源
        最近更新 更多