Вопрос
Я пытаюсь использовать Autoit с Ruby. В Autoit есть некоторые функции, определенные пользователем, которые мне нужны для моей автоматизации графического интерфейса, например, доступ к вкладкам в окне и т. Д. Проблема в том, что, в отличие от обычных API Autoit, я не могу получить доступ к UDF Autoit из рукоятки объекта Ruby Win32ole для Autoit Dll Анкет Есть ли способ получить доступ к этим UDF в моем коде Ruby? На самом деле это некоторые функции, определенные в сценариях Autoit, и я думаю, что то, что я хочу, невозможно. Я хочу какое -то мнение от кого -то, кто, возможно, попробовал это раньше и пришел к некоторому выводу.
Спасибо и с уважением, Анджали
Решение
Это не может быть сделано, согласно Форум Autoit. Анкет Я думаю, вам придется переписать UDF в Ruby.
Другие советы
Переписывание UDF в Ruby - это простое решение. Однако это не решение во всех случаях из -за объема задействованной работы. Не существует прямого способа вызывать функции аутоита из Ruby, потому что нет способа, которым вы не можете компилировать автоматическую работу с 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, чтобы прочитать содержимое файла.
Другие варианты для более традиционной межпроцессной связи включают:
- Почтовые шокировки: http://www.autoitscript.com/forum/topic/106710-mailslot/
- _Sendmessage: пусть сценарий Autoit отправит сообщение Windows в окно, созданное в Ruby
- Создание сервера Telnet в Autoit, отправлять и получать команды через TCP: http://www.autoitscript.com/forum/topic/123713-simple-telnet-server-skeleton-with-authentication/
- HTTP Server, если вы ищете более без сохранности общения или в Интернете: Поиск Autoit Http Server на Google. Защита от спама для новых пользователей не позволяет мне публиковать ссылку.
Возможности бесконечны. :) Этот пост должен заставить вас начать.