用 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 读取文件的内容。
更多非传统进程间通信的其他选项包括:
可能性是无穷无尽的。:) 这篇文章应该让你开始。