AutoIt

Обсуждение ПО используемого нами для решения тех или иных задач (Антивирусы, движки BD, файрволлы и т.п.)
Аватара пользователя
Val
зам. председателя совета директоров
зам. председателя совета директоров
Сообщения: 2029
Зарегистрирован: 09.06.2004 08:52
Откуда: Ейск
Контактная информация:

AutoIt

Сообщение Val » 16.05.2008 13:43

Кто нибудь использует это язык для автоматизации?
Скрипт для установки связи с ОФК, запуска СЭДа, получение файлов, закрытия СЭДа и связи.

Код: Выделить всё

; еще не все ошибки обработаны
; Ейский район, 2008
Const $mc = 7 ; минут до автовыразрыва связи
Const $DialUser = "ХХХХ" ; имя юзера на дозвоне
Const $DialPass = "ХХХХ" ; пароль юзера на дозвоне
Const $DialName = "ОФК" ; имя соединения
Const $DialCount = 10 ; попыток дозвона

Const $Window1Name = "Логин"  ; название первого окна СЭДа
Const $Window1Text = ""
Const $Window2Name = "Клиент СЭД" ; название основного окна СЭДа
Const $Window2Text = ""

Const $SEDDir = "c:\fkclnt1\exe\" ; путь к СЭДу
Const $SEDFile = "!cbank.bat" ; имя запускного файла СЭДа

dim $i

$i=0 ; будет кол-во попыток дозвона
while $i<$DialCount
   if RunWait("rasdial " & $DialName & " " & $DialUser & " " & $DialPass)=0 then  ; звоним
      $i += 1   ;  если успешно
      ExitLoop
   Else
      $i += 1   ;  если не успешно
      sleep(2000)
   EndIf
WEnd
if $i>$DialCount then exit ; если все попытки неуспешны, то выйдем

RunWait($SEDDir & $SEDFile,$SEDDir) ; пускаем СЭД
sleep(2000);
If not WinExists($Window1Name) Then exit ; если не открылось окно Login
WinActivate($Window1Name, "")   ; если открылось окно Login то нажмем Enter
sleep(100)
send("{ENTER}")
sleep(10000)

If Not WinActive($Window2Name) Then WinActivate($Window2Name) ; активируем основное окно
Opt("MouseCoordMode",0)   ; координаты относительно активного окна
MouseMove(158,61)   ; кнопку вызова связи
MouseDown("left")
MouseUp("left")
Opt("MouseCoordMode",1) ; координаты абсолютные
sleep(1000)

$hb = @HOUR   ; время сохраним
$mb = @MIN
$he = $hb ; посчитаем время когда нужно будет разъединиться
if $mb+$mc>59 Then
   $he+=1
   $me=$mb+$mc-60
Else
   $me=$mb+$mc
EndIf
Do
   sleep(10000)
Until ($he<=@HOUR and $me<=@MIN) or (not WinExists($Window2Name)) ; выйдем из цикла если кончилось время или юзер закрыл СЭД
if WinExists($Window2Name) Then  ; если кончилось время то закроем СЭД
   WinActive($Window2Name)
   Sleep(500)
   Send("!{F4}")
endif

Вернуться в «ПО для наших нужд»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя

cron