Pull to refresh

Примеры автоматизации работы в AutoIt

Предисловие:
Доброго времени суток!
Данный материал навеян вышестоящим топиком про AutoIt, который расписывал синтаксические конструкции языка, а мы пойдем другим путем — рассмотрим реальные примеры автоматизации.
Начнем:

Не секрет, что часто приходится делать монотонную работу на компьютере — фиксированный набор действий. AutoIt, при правильном подходе, обеспечит существенный выигрыш во времени администратору, да, впрочем, и любому пользователю.
Первое и самое простое — мне, например, часто нужно переводить текст, находящийся в буфере обмена из одного регистра в другой. Код для этого:
; Перевести в регист в нижний
$txt=ClipGet()
$txt=StringLower($txt)
ClipPut($txt)


Второе — автоматизация Total Commander
При запуске данной программы (если, конечно, она не зарегистрирована) появляется окошко с просьбой-приказом нажать кнопку 1, 2 или 3. Рутина…
Давайте, автоматизируем это…
;MouseClick («left»,184,1007,1,10)
; Запускаем Total
Run(«C:\Program Files\totalcmd\TOTALCMD.EXE»,«C:\Program Files\totalcmd\»,@SW_SHOW)
; Ждем, пока появится окошко
WinWaitActive(«Total Commander»)
; В переменную — заголовок Total Commander
$title=«Total Commander»
; Ждем 3 сек.
sleep(3000)
; Получаем текст поля Total, где предлагается нажать определенную кнопку
$var = ControlGetText($title, "", «TPanel2»)
sleep(500)
; Если там написано 1 — подводим мышку и нажимаем первую кнопку
If $var=«1» Then
MouseMove(550,634)
; Если там написано 2 — подводим мышку и нажимаем вторую кнопку
ElseIf $var=«2» Then
MouseMove(663,630)
else
; Иначе — подводим мышку и нажимаем третью кнопку
MouseMove(746,633)
EndIf
MouseClick(«left»)
; Ищем окно с заголовком и сворачиваем его
WinSetState(«Total Commander 7.50a — НЕ ЗАРЕГИСТРИРОВАНО»,«Total Commander 7.50a — НЕ ЗАРЕГИСТРИРОВАНО»,@SW_MINIMIZE)

Хочу предупредить — код привязан к конкретному разрешению экрана, если будете запускать его — предварительно укажите свои координаты окон.
Сделать это можно, использую утилиту AutoIt Window Info, она поставляется вместе с дистрибутивом AutoIt.

Что еще?
Чтение текстового файла, где через разделитель, например "|" содержатся имена пользователей и пароль:
11111|qwerty
22222|asdfgh

Код для чтения такого файла (мой код для чтения данного файла):
; Путь к файлу с паролями — <имя пользователя>|<пароль>
$file='C:\Temp\4.txt'
If FileExists($file) Then
; Файл найден
$file_read=FileOpen($file,0)
If $file_read = -1 Then
MsgBox(0, «Error», «Файл невозможно открыть.»)
Exit
EndIf
While 1
$login=''
$passwd=''
$str=''
$line = FileReadLine($file_read)
If error = -1 Then ExitLoop
; Чтение файла. line — строка
$str=StringSplit($line,'|')
$login=$str[1]
$passwd=$str[2]
; Здесь код, который меняет пароль в программе
Wend
FileClose($file)

Else
; Файл не найден
MsgBox(4096,$file, «Does NOT exists»)
Exit
EndIf


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

Подытожим:
Привожу команды (ну или операторы), наиболее применяемые в моем случае:
1. MouseClick('left',110, 309,1,10) — Эмуляция нажатия на кнопку. Параметры (с лева на право) — кнопка — левая, координаты x,y, число нажатий, скорость перемещения
2. Send('abc'), Send('{TAB}') — эмуляция ввода. В первом случае вводится текстовая строка («abc»), во втором случае — эмулируется нажатие кнопки «Табуляция». Нажать ENTER можно, соответственно, так, Send('{ENTER}')
Обращаю внимание, у меня были случаи, когда AutoIT не успевал вводить текст, для управления скоростью ввода используйте функцию — AutoItSetOption («SendKeyDelay»,70), где число — скорость ввода в мл. сек.
3. Sleep(1000) — Пауза
4. WinActivate(«Пользователи — Microsoft Internet Explorer», "") — Активировать окно, то есть вывести его на передний план, если оно, конечно, открыто.
5. Изменить (установить) статус окна, например WinSetState($title, '', @SW_HIDE) — спрятать окошко, с заголовком. указанным в переменной $title

Пока это все. Благодарю за внимание!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.