Русское сообщество AutoIt

Общий раздел по AutoIt => Стол заказов => Тема начата: Absolutelight от Декабрь 27, 2016, 19:11:20

Название: Цикл чтения из файла txt построчно и заполнение полей стороннего окна c условием
Отправлено: Absolutelight от Декабрь 27, 2016, 19:11:20
Версия AutoIt: 3.

Описание:

Привет, уважаемые форумчане. Нужна ваша помощь.
Нужно, чтобы скрипт читал текстовый файл reader.txt и вписывал данные в диалоговое окно приложения autotelnet.exe (приложил). Есть исходник autotelnet на vb.net (по запросу). Так же приложил пример файл откуда читать - reader.txt
На vb.net я так и не понял как использовать правильно библиотеку user23.dll для работы с хендалами и классами полей в консольном приложении. Как их ловить и вписывать значения... Решил запускать скрипт отдельно на AutoIt. 
Вот описание программы для autoit: 



(нажмите для показа/скрытия)

Вопрос, как правильно оформить while вместе с построением массива данных и передать  2 токена в окно autotelnet из этого массива   ?
Вот код autoit:

Код: AutoIt [Выделить]
#include <file.au3>
#include <Array.au3>

local $localip = FileRead("localip.txt", 1)
; 'тут эксперементировал с ini
; 'local $getip = IniRead( $file,"1 code","ip","default" )
; 'local $getname = IniRead( $file,"1 code","value1", "default" )
local $telcode = ("q")
local $telcode2 = ("command-output 'show tech all' tftp")
local $telcode3 = ("SWITCH")
local $telcode4 = (".txt")


; вопрос как читать построчно и передавать в окно autotelnet.  Записал ниже просто строки, которые помогут наверняка составить правильный код.

Global $records
If Not _FileReadToArray(@ScriptDir&'\reader.txt', $records) Then
   MsgBox(4096,"Ошибка", "Невозможно прочитать массив" & @error)
   Exit
EndIf


While True
   
    ; здесь нужно сделать массив, но не хватает опыта сделать правильно чтения файла и подставлять переменные в цикл.
    ; For $i = 1 to $token0[0] , $token1(1)
   

    $telnet = WinWait ("AutoTelnet 1.3.0 - Telnet automation tool", "", 1)
      if not ($telnet = 0) then
      WinActivate ("AutoTelnet 1.3.0 - Telnet automation tool")
      ControlSetText("AutoTelnet 1.3.0 - Telnet automation tool", "", "[CLASS:WindowsForms10.EDIT.app.0.141b42a_r14_ad1; INSTANCE:3]", $localip )
      ControlSetText("AutoTelnet 1.3.0 - Telnet automation tool", "", "[CLASS:WindowsForms10.RichEdit20W.app.0.141b42a_r14_ad1; INSTANCE:1]", $telcode )
      ControlSetText("AutoTelnet 1.3.0 - Telnet automation tool", "", "[CLASS:WindowsForms10.RichEdit20W.app.0.141b42a_r14_ad1; INSTANCE:1]", "{ENTER}")
      ControlSetText("AutoTelnet 1.3.0 - Telnet automation tool", "", "[CLASS:WindowsForms10.RichEdit20W.app.0.141b42a_r14_ad1; INSTANCE:1]", $telcode2+$token0+$telcode3+$token1+$telcode4 )
      send ("{CTRLDOWN}")
      send ("{r}")
      send ("{CTRLUP}")
      Sleep(5000)
          ControlGetText("AutoTelnet 1.3.0 - Telnet automation tool", "Execution script completed", 1052122 )
     

Next

Endif
   Wend

 


Примечания:

Прикрепил autotelnet.exe
Прикрепил reader.txt

Я пытался написать эту часть на vb.net, но ничего не получилось.
Вот начало программы на vb.net:

(нажмите для показа/скрытия)
Название: Re: Цикл чтения из файла txt построчно и заполнение полей стороннего окна c условием
Отправлено: Absolutelight от Декабрь 28, 2016, 14:41:14
Absolutelight
(нажмите для показа/скрытия)

Приветствую! Спасибо за совет. Так хорошо?
Название: Re: Цикл чтения из файла txt построчно и заполнение полей стороннего окна c условием
Отправлено: Alofa от Декабрь 28, 2016, 14:45:25
OffTopic
Так хорошо?
Да, спасибо. Сам на телефоне, пока помоч не могу.
Название: Re: Цикл чтения из файла txt построчно и заполнение полей стороннего окна c условием
Отправлено: InnI от Декабрь 28, 2016, 16:26:12
Absolutelight
Цитировать
ожидание вывода сообщения в control id 1052122 окна: "Execution script completed"
Получить текст "панели статуса" без спецсредств не получится. Поэтому, будем ждать подключение по тексту в синем поле. Замените в скрипте строку "Execution script completed" на часть сообщения при успешном соединении
(нажмите для показа/скрытия)
Название: Re: Цикл чтения из файла txt построчно и заполнение полей стороннего окна c условием
Отправлено: Absolutelight от Январь 08, 2017, 19:28:25
Absolutelight
Цитировать
ожидание вывода сообщения в control id 1052122 окна: "Execution script completed"
Получить текст "панели статуса" без спецсредств не получится. Поэтому, будем ждать подключение по тексту в синем поле. Замените в скрипте строку "Execution script completed" на часть сообщения при успешном соединении
(нажмите для показа/скрытия)

Спасибо большое за помощь. Я составил код скрипта.
Но последняя задача такая (все в эту же тему):

Считать два массива и посылать две разных переменных одной строкой в окно. При этом переменных: $aTokens может быть 0 и 1 (как Вы правильно сделали).
А переменных $aComm может быть сколько угодно 0, 1, 2, 3, 4... + (они вводятся пользователем и сохраняются в файл commands.txt, затем файл commands.txt и считывается в массив.)
Нужно обойти ошибку количества команд и правильно оформить функцию for $i

(нажмите для показа/скрытия)

Название: Re: Цикл чтения из файла txt построчно и заполнение полей стороннего окна c условием
Отправлено: InnI от Январь 10, 2017, 14:10:19
Считать два массива и посылать две разных переменных одной строкой в окно (http://autoit-script.ru/index.php?topic=23278.0)