Вставки скриптов в AutoIT

В Autoit бывают ситуации, когда какое нибудь действие легче сделать с помощью других скриптов, например общение с АД, да мало ли бывает ситуций. При этом так же важно иметь отклик от данного скрипта, что бы можно было среагировать на поступающие ошибки или мы просто хотим получить данные.

Предлагаю несколько вариантов вставок.

 

Запуск VBS из AutoIt:

Рассмотрим следующий код:

 

 

Объявляем переменную $Code, в эту переменную мы будем записывать код на VBS

Не буду подробно описывать код который я использую на VBS, так как функции и реализация надуманны
Обращу ваше внимание на следующие моменты:

Здесь мы объявляем функцию UP которая возвращает значение параметра i2 увеличенное на 1

Здесь мы бъявляем вторую функцию Test с параметром i

 

В ней мы можем использовать объявленные в этом коде функции, в нашем примере функция up

 

На этой строчке мы закончили наполнять переменную $Code.

 

$VbsObj становится ссылкой на COM объект  «ScriptControl»

 

Проверяем удачность предыдущего события

 

Указываем язык нашего кода в переменной  $Code — «vbscript»

 

Добавляем наш код в этот ком объект

 

$VbsObj.Run(«Test», 20)- Запускаем функцию Test где 20 это параметр i, результатом функции $VbsObj.Run будет результат возвращённый функцией «Test». И соответственно он присвоится переменной $Res

 

Запуск PowerShell из AutoIt или обратный отклик от EXE :

Иногда хочется не только запустить утилиту через AutoIt, но и посмотреть, что она выдала в консоли.

Разберём следующий скрипт:

 

Из за того, что в консоли виндовс нам выдаются надписи в кодировке OEM2, а AutoIt работает с ANSI, то без перекодировки не обойтись если нам нужен отклик от программы.

Для перекодировки используем библиотеку user32.dll  c помощью функции DllCall.

Её первый параметр используемая библиотека(user32.dll),

второй тип результата функции(Int),

третий сама функция из библиотеки (OemToChar),

четвёртый тип первого параметра(str),

пятый непосредственно сам параметр(параметр нашей функции $watch),

шестая тип втого параметра(str),

седьмая значение второго параметра(»)

 

Здесь пишем команды на PowerShell не забываем, что это будет папаметр к PowerShell.exe, так что всё в одну строчку ипользуем ‘;’ если надо разделить команды.

 

Запускаем  PowerShell.exe с параметром $Cmd, при этом запуск будет не заметным для пользователя (@SW_HIDE)
$STDIN_CHILD заставляет использовать указатель дочернего потока STDIN
$STDOUT_CHILD заставляет использовать указатель дочернего потока STDOUT
$STDERR_CHILD заставляет использовать указатель дочернего потока STDERR

 

Забираем потоки вывода которые были сформированны при запуске нашего приложения

 

Эти переменные понадобятся нам, для того что бы забрать данные из потоков вывода

 

Здесь мы забираем данные из потока STDOUT по строчно($line = StdoutRead($PowerShell)).

И записываем в переменную, не забыв их преобразовать в нужную кодировку из OEM2 в ANSI  ($lineData &=_OEM2ANSI($line))

Так как этих данных может быть больше одной строчки, то забираем в цикле пока не появится какая либо ошибка, например кончились данные.

 

Тоже самое делаем с данными попавшими в поток ошибок StderrRead.

Комментарии:

Комментарии 8

  • Антон, здравствуйте.
    Я пытаюсь освоить программу AutoIT, но не получается. Не могли бы Вы подсказать мне, чтобы дело сдвинулось.
    Мне нужно:
    1. Считать число с экрана сайта (вручную это — выделить, скопировать)
    2. Обработать это число (это я знаю — это моя программа)
    3. Записать результат обработки (число) в поле на другом сайте (вручную я делаю так — выделяю имеющееся значение, и на его место вставляю новое)
    4. Нажать ввод для выполнения.
    Буду признателен за помощь.
    С уважением,
    Виктор.

    • Антон,
      Спасибо, что уделили мне внимание.
      Мой уровень это — начальный Basic. Поэтому, пока, я мало что понял, но буду разбираться.
      Я посмотрел, что такое Парсинг и мне показалось, что это не совсем то, что мне нужно.
      Если Вы можете уделить мне еще немного внимания — у меня просьба — давайте я пошлю Вам на эл. почту поясняющую картинку. Тогда Вы поймете, что нужно мне, а я буду знать в каком направлении мне двигаться.
      С уважением,
      Виктор.

      • Антон,
        По пп. 3,4 идея мне понятна, буду пробовать практически реализовать это.
        Спасибо Вам.

      • Я отправил письмо, на почту которую вы указали, при публикации комментария.

        • Здравствуйте Антон. Скажите пожалуйста мне нужен скрипт на вход на сайт(браузер моззила, тор, яндекс) и автозаполнения логина и пароля где я могу это найти? Благодарю.

          • Здравствуйте.
            Если вы хотите, что бы открывался браузер, в нём открывался сайт и потом вводилие логин и пароль. И при этом вы хотите использовать тор браузер основанный на мозиле……

            Ну можно попытаться допустим тем же AutoIT открыть браузер и после длительного ожидания начать в слепую посылать в браузер символы. Но это жутко не стабильно.
            Есть специальный продукт ZennoPoster, зверёк платный. Но там есть всё и поиск прокси и программирование и капчу разгадывать можно попытаться. И многопоточность.
            Можно движок Gecko поковырять. Это кокраз фаерфокс, но там надо попатеть, что бы и тор прикрепить и настроить автоматизацию.
            Есть какой то плагин под написание скриптов подо фаерфокс, но я чёт и забыл как его зовут… и вопрос можно ли такую штуку прикреплять к тор браузеру …
            В общем вопрос не тривиальный 🙂
            Ещё под фаерфокс есть плагин автозаполнитель форм… но опять же это всё для меня противоречит идеологии тора 🙂

  • Очень нужен скрипт для autoit
    Проверить наличие любого файла с расширениями * .doc, *.odt в папке на диске D и открыть окно, если файл там появился. Спасибо. Анна.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *