Примеры автоматизации работы в 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

Пока это все. Благодарю за внимание!
Теги:
AutoIt, автоматизация

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.