Доступ к autoit UDF из Ruby

Я пытаюсь использовать Autoit с Ruby. В Autoit есть некоторые пользовательские функции, которые мне нужны для автоматизации моего графического интерфейса, такие как доступ к вкладке окна и т. Д. Проблема в том, что, в отличие от обычных API-интерфейсов autoit, я не могу получить доступ к UDF autoit из дескриптора объекта ruby ​​win32ole для autoit dll. . Есть ли способ получить доступ к этим UDF в моем коде Ruby? На самом деле это некоторые функции, определенные в сценариях autoit, и я думаю, что то, что я хочу, невозможно. Я хочу услышать мнение кого-то, кто, возможно, пробовал это раньше и пришел к какому-то выводу.

Спасибо и с уважением, Анджали


person Anjali    schedule 13.01.2011    source источник


Ответы (2)


Согласно автофорум. Думаю, вам придется переписать UDF на Ruby.

person steenslag    schedule 13.01.2011

Переписать UDF на Ruby — простое решение. Однако это не решение во всех случаях из-за объема работы. Нет прямого способа вызвать функции AutoIt из Ruby, потому что вы не можете скомпилировать AutoIt в dll, COM или что-то подобное.

Что вы можете сделать, так это переписать свои UDF AutoIt, чтобы включить межпроцессное взаимодействие. Вы можете сделать это через параметры командной строки:

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 для чтения содержимого файла.

Другие варианты более нетрадиционного межпроцессного взаимодействия включают:

Возможности безграничны. :) Этот пост должен помочь вам начать.

person Jos van Egmond    schedule 09.02.2011