1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Скриптовый язык AutoIT

Скриптовый язык AutoIT

Скриптовый язык AutoIt — это бесплатный мощный язык для написания сценариев для Windows 2000, XP, 2003, Vista, Server 2008 (для машин с 32 и 64-разрядным процессором) с упором на автоматизацию GUI, который можно применять для решения широкого спектра задач, начиная от автоматизации рутинных операций и заканчивая созданием сложных приложений. Синтаксис AutoIt — бейсикоподобный, поэтому язык достаточно прост в изучении. Сам AutoIt создан на языке Cи и достаточно нетребователен к ресурсам компьютера. Основной автор и разработчик проекта AutoIt — Jonathan Bennet. Взять язык можно здесь. Подробный протокол развития AutoIt можно увидеть здесь. Русскую справку (подробный файл CHM) можно скачать здесь.

Основные возможности языка:

  • работа со строками, математические функции, регулярные выражения, поддержка Unicode, встроенные макропеременные, содержащие системную информацию «только для чтения»; инструкция #include для подключения библиотек; работа с файловой системой и текстовыми файлами; обработка параметров командной строки; анализ и преобразование типов переменных;
  • имитация пользовательского ввода мышью и клавиатурой в любых приложениях;
  • манипуляция окнами запущенных приложений (получение информации и управление);
  • глобальные перехватчики клавиатуры, запуск процедур по нажатию горячих клавиш;
  • компиляция в исполняемые exe-модули;
  • построение GUI; основные элементы управления, а также пользовательские элементы управления, поставляемые как ActiveX; рисование графических примитивов; работа с треем; стандартные диалоги выбора файла и обзора каталогов;
  • поддержка COM с возможностью обработки событий;
  • вызов экспортируемых функций DLL (например, Win32 API), включая callback; работа с API структурами данных;
  • библиотека AutoItX3.dll — ActiveX компонент, позволяющий использовать некоторые возможности AutoIt на произвольном языке программирования через интерфейсы DLL и ActiveX/COM;
  • работа с сетью (протоколы TCP и UDP, загрузка файлов);
  • мониторинг и запуск процессов; запуск процессов от имени указанной учётной записи;
  • работа с реестром;
  • работа с буфером обмена;
  • проигрывание wav, mp3, avi файлов;
  • поддержка User Account Control (UAC) в Windows Vista.

Объекты консольного приложения

Выводить текст на консоль, осуществлять ввод символов, а так же совершать любые иные действия с консолью можно лишь ассоциировав с ней некие системные сущности (объекты), посредством которых можно обеспечивать обмен данными. Каждая консоль состоит из следующих основных объектов:

  • [единственный] входной буфер — область данных (события/сигналы/данные) для ввода (передачи на консоль);
  • [несколько] экранный выходной буфер — область данных (символы/атрибуты) для вывода (отображения на экране);
  • Окно консоли — область экрана, отображающая часть выходного буфера;
  • Текущая позиция курсора — маркера вывода, обозначающий текущую позицию вывода;

Стандартные потоки (дескрипторы консоли)

На программном уровне для ввода/вывода информации консольные приложения используют три основных стандартных устройства ввода-вывода:

НаименованиеНазначение
Стандартный ввод ( stdin )Поток данных, идущих в программу.
Стандартный вывод ( stdout )Поток данных, идущих из программы.
Стандартная ошибка ( stderr )Поток сообщений об ошибках, идущих из программы.

Для кода любого консольного приложения стандартные потоки доступны через дескрипторы и используют последние для того, чтобы обратиться к стандартному вводу (буферу ввода данных) и стандартному выводу (экранным буферам) собственной консоли. Хотя этими потоками консольное приложение не ограничено, никто не запрещает ему открывать любые файлы, использовать сетевые соединения и совершать иные действия, доступные в выполняющей их среде.

Традиционно, со стандартным вводом ассоциирована клавиатура, а со стандартным выводом/ошибкой ассоциирован монитор (экран), таким образом вывод печатных символов в STDOUT и STDERR приводит к появлению этих символов на устройстве вывода и к получению их пользователем. В дополнение, потоки могут быть переопределены (перенаправлены) и на другие логические устройства (файл, ввод/вывод другой программы и прочее). Поэтому определение консольного приложения может быть расширено:

Тем не менее возникает резонный вопрос: обязательно ли наличие окна консоли у консольного приложения? Ведь, теоретически, консольные программы могут обходиться и без классического ввода (с клавиатуры) и вывода (в окно, на экран), поскольку объекты stdin и stdout могут быть связаны с файлами, потоками ввода/вывода других программ или иными объектами операционной системы? Тем не менее, стандартный сценарий использования консольного приложения в Windows подразумевает создание отдельного окна консоли.
В ходе запуска консольного приложения, система генерирует вышеперечисленные дескрипторы для вновь создаваемого процесса консоли. Процесс консольного приложения обычно использует функции GetStdHandle , CreateFile , CreateConsoleScreenBuffer для того, чтобы открыть один из вышеописанных дескрипторов. Функция GetStdHandle обеспечивает механизм получения кодом приложения дескрипторов стандартного ввода, стандартного вывода и стандартной ошибки, связываемых с процессом в момент создания. В случае необходимости имеется возможность переназначить стандартные дескрипторы через функцию SetStdHandle , изменяющую дескрипторы, связанные с STDIN , STDOUT или STDERR .
Стандартные дескрипторы родительского процесса всегда наследуются всеми создаваемыми дочерними процессами, поэтому вызовы функции GetStdHandle дочерними процессами возвращают переназначенный дескриптор. По этой причине, в зависимости от действий родительского процесса, дескриптор, возвращенный функцией GetStdHandle , может сослаться на что-либо, отличное от привычного нам консольного ввода-вывода. К примеру, родительский процесс может при помощи SetStdHandle изменить дескриптор какого-либо потока (например STDIN ) перед созданием дочернего процесса. Затем, когда созданный дочерний процесс у себя в коде вызовет функцию GetStdHandle , он получает дескриптор переназначенного канала. Этим обеспечивается механизм управления родительским процессом стандартными дескрипторами дочернего процесса.

Буфер ввода

Каждое консольное приложение имеет буфер вводимых данных:

В момент, когда окно консольного приложения имеет фокус клавиатуры (является активным), консоль оформляет каждое событие ввода (типа нажатия/отпускания клавиши, перемещение указателя мыши или щелчка кнопки мыши) в качестве данных, которые помещаются в буфер вводимых данных консоли. Что такое эти самые данные? Запись данных о вводе ― структура Windows, содержащая в себе информацию о деталях события: тип, источник (клавиатура, мышь, размеры окна, фокус, меню) и прочих. Структура имеет внутренний тип INPUT_RECORD и представляет собой следующее:

Инструменты в поставке

После установки AutoIt вам будут доступны следующие основные инструменты:

  • утилита Aut2exe.exe для создания исполняемых exe-модулей; позволяет компилировать скрипты как консольные и как GUI-приложения;
  • утилита AU3Info.exe для отслеживания различных характеристик окон под курсором мыши, важный инструмент написания скриптов для управления окнами;
  • AutoIt.chm — основной файл документации (англ.), использующий файлы AutoIt3.chm и UDFs3.chm; документация обширна и подробна;
  • в каталоге Include содержится свыше 80 готовых скриптов для подключения их директивой #include; это библиотеки пользовательских функций (UDF — User Defined Function), созданных энтузиастами AutoIt, которые можно использовать в любом скрипте; все эти функции документированы в файле справки, таких функций более двухсот пятидесяти;
  • в каталоге Examples содержится свыше двух тысяч примеров скриптов; подавляющее большинство из них является составной частью файла справки (каталог ExamplesHelpfile);

  • для версий AutoIt, более ранних, чем версия на момент написания данной статьи, работает утилита Exe2Aut.exe для обратной декомпиляции ранее откомпилированных скриптов (на декомпиляцию может быть установлен пароль);
  • версии AutoIt, более ранние, чем версия на момент написания данной статьи, поддерживают версии Windows 9x.

Объекты консольного приложения

Выводить текст на консоль, осуществлять ввод символов, а так же совершать любые иные действия с консолью можно лишь ассоциировав с ней некие системные сущности (объекты), посредством которых можно обеспечивать обмен данными. Каждая консоль состоит из следующих основных объектов:

  • [единственный] входной буфер — область данных (события/сигналы/данные) для ввода (передачи на консоль);
  • [несколько] экранный выходной буфер — область данных (символы/атрибуты) для вывода (отображения на экране);
  • Окно консоли — область экрана, отображающая часть выходного буфера;
  • Текущая позиция курсора — маркера вывода, обозначающий текущую позицию вывода;

Стандартные потоки (дескрипторы консоли)

На программном уровне для ввода/вывода информации консольные приложения используют три основных стандартных устройства ввода-вывода:

НаименованиеНазначение
Стандартный ввод ( stdin )Поток данных, идущих в программу.
Стандартный вывод ( stdout )Поток данных, идущих из программы.
Стандартная ошибка ( stderr )Поток сообщений об ошибках, идущих из программы.

Для кода любого консольного приложения стандартные потоки доступны через дескрипторы и используют последние для того, чтобы обратиться к стандартному вводу (буферу ввода данных) и стандартному выводу (экранным буферам) собственной консоли. Хотя этими потоками консольное приложение не ограничено, никто не запрещает ему открывать любые файлы, использовать сетевые соединения и совершать иные действия, доступные в выполняющей их среде.

Традиционно, со стандартным вводом ассоциирована клавиатура, а со стандартным выводом/ошибкой ассоциирован монитор (экран), таким образом вывод печатных символов в STDOUT и STDERR приводит к появлению этих символов на устройстве вывода и к получению их пользователем. В дополнение, потоки могут быть переопределены (перенаправлены) и на другие логические устройства (файл, ввод/вывод другой программы и прочее). Поэтому определение консольного приложения может быть расширено:

Тем не менее возникает резонный вопрос: обязательно ли наличие окна консоли у консольного приложения? Ведь, теоретически, консольные программы могут обходиться и без классического ввода (с клавиатуры) и вывода (в окно, на экран), поскольку объекты stdin и stdout могут быть связаны с файлами, потоками ввода/вывода других программ или иными объектами операционной системы? Тем не менее, стандартный сценарий использования консольного приложения в Windows подразумевает создание отдельного окна консоли.
В ходе запуска консольного приложения, система генерирует вышеперечисленные дескрипторы для вновь создаваемого процесса консоли. Процесс консольного приложения обычно использует функции GetStdHandle , CreateFile , CreateConsoleScreenBuffer для того, чтобы открыть один из вышеописанных дескрипторов. Функция GetStdHandle обеспечивает механизм получения кодом приложения дескрипторов стандартного ввода, стандартного вывода и стандартной ошибки, связываемых с процессом в момент создания. В случае необходимости имеется возможность переназначить стандартные дескрипторы через функцию SetStdHandle , изменяющую дескрипторы, связанные с STDIN , STDOUT или STDERR .
Стандартные дескрипторы родительского процесса всегда наследуются всеми создаваемыми дочерними процессами, поэтому вызовы функции GetStdHandle дочерними процессами возвращают переназначенный дескриптор. По этой причине, в зависимости от действий родительского процесса, дескриптор, возвращенный функцией GetStdHandle , может сослаться на что-либо, отличное от привычного нам консольного ввода-вывода. К примеру, родительский процесс может при помощи SetStdHandle изменить дескриптор какого-либо потока (например STDIN ) перед созданием дочернего процесса. Затем, когда созданный дочерний процесс у себя в коде вызовет функцию GetStdHandle , он получает дескриптор переназначенного канала. Этим обеспечивается механизм управления родительским процессом стандартными дескрипторами дочернего процесса.

Буфер ввода

Каждое консольное приложение имеет буфер вводимых данных:

В момент, когда окно консольного приложения имеет фокус клавиатуры (является активным), консоль оформляет каждое событие ввода (типа нажатия/отпускания клавиши, перемещение указателя мыши или щелчка кнопки мыши) в качестве данных, которые помещаются в буфер вводимых данных консоли. Что такое эти самые данные? Запись данных о вводе ― структура Windows, содержащая в себе информацию о деталях события: тип, источник (клавиатура, мышь, размеры окна, фокус, меню) и прочих. Структура имеет внутренний тип INPUT_RECORD и представляет собой следующее:

Получение помощи¶

Для быстрого получения информации о любой функции или операторе Python служит встроенная функция help . Это особенно удобно при использовании командной строки интерпретатора. К примеру, выполните help(print) – это покажет справку по функции print , которая используется для вывода на экран.

Для выхода из справки нажмите q .

Аналогичным образом можно получить информацию почти о чём угодно в Python. При помощи функции help() можно даже получить описание самой функции help !

Если вас интересует информация об операторах, как например, return , их необходимо указывать в кавычках (например, help(‘return’) ), чтобы Python понял, чего мы хотим.

Читать еще:  Как настроить наручные часы с одной кнопкой и без кнопок. Подготовка к настройке смарт вотч
Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector