Этот раздел предназначен для ответов на некоторые вопросы, которые были заданы на форуме (англ.). Если вы не найдёте здесь ответ на свой вопрос - попробуйте поискать/спросить на форуме.
AutoIt предназначен для общих задач автоматизации. Для достижения этой цели был создан стандартизированный бейсикоподобный язык программирования. Это означает, что если вы уже знакомы с какими-либо скриптовыми языками программирования, то вы, скорее всего, с легкостью освоите AutoIt v3.
Освоить AutoIt3 очень легко, посмотрите пример вызова команд
Run('calc.exe') ; Запуск программы
Beep(500, 1000) ; Воспроизводит звуковой сигнал
Shutdown(32) ; Ждущий режим
Все "строки" заключаются в кавычки. Многие текстовые редакторы поддерживают подсветку синтаксиса.
Вы можете использовать MsgBox для вывода в диалоговое окно, ConsoleWrite для вывода в консоль редактора (например SciTE), FileWrite для записи данных в файл.
Да, AutoIt3 позволяет создавать окна со стандартными элементами интерфейса и выполнять с ними различные операции: чтение, изменение атрибутов и т.д. Также в UDF имеются более расширенные функции управления элементами интерфейса.
Если вы хотите использовать DOS-команды такие как “DIR”, вы должны запустить её в командном интерпретаторе (command.com или cmd.exe, в зависимости от вашей ОС). Макро @ComSpec содержит правильное расположение этого файла. Вам следует использовать функцию RunWait, так как она ждет пока DOS-команда завершит свое действие прежде чем переходит к обработке следующей строки скрипта. Ниже вы найдёте скрипт, который выполняет команду “DIR” для папки “С:” (аналогично запуску команды command.com /c Dir C:\ или cmd.exe /c Dir C:\)
RunWait(@ComSpec & " /c Dir C:\")
Лишь некоторые расширения файлов, как правило, относятся к "запускаемым". Например .exe, .bat, .com, .pif. Остальные, такие, как .txt или .msi, запускается посредством других программ. Когда вы делает двойной клик по файлу "myfile.msi", незаметно для вас в фоне выполняется команда "msiexec.exe myfile.msi". Поэтому для запуска .msi файлов из AutoIt вам следует сделать как указано ниже:
RunWait("msiexec myfile.msi")
Или выполните команду "start", который автоматически определит как именно нужно запустить тот или иной файл:
RunWait(@ComSpec & " /c Start myfile.msi")
Еще один вариант - использовать функцию ShellExecuteWait, которая так же автоматически определит нужный способ запуска файла:
ShellExecuteWait("myfile.msi")
Если вы хотите использовать эти же кавычки внутри строки, то вам следует удвоить их кол-во, то есть для каждой кавычки используйте две кавычки, вместо одной. Например, если вы хотите переменной присвоить строку: Вот "это" слово в предложении обрамлено кавычками!, то вам надо сделать следующее:
$var = "Вот ""это"" слово в предложении обрамлено кавычками!"
либо использовать одинарные кавычки:
$var = 'Вот "это" слово в предложении обрамлено кавычками!'
Более подробную информацию вы можете найти здесь.
Если у вас есть переменная с именем $msg и вы хотите вывести его в MsgBox, то следующая конструкция НЕ сработает:
MsgBox(0, "Пример", "Моя переменная $msg")
Фактически это выдаст текст сообщения Моя переменная $msg. Вам же следует указать интерпретатору, что необходимо соединить строку с содержимым переменной используя оператор &:
MsgBox(0, "Пример", "Моя переменная " & $msg)
Дополнение: Также можно воспользоваться функцией StringFormat. Например, чтобы объединить переменные от $var1 до $var5, используйте следующую конструкцию:
$msg = StringFormat("Переменная1= %s, Переменная2= %s, Переменная3= %s, Переменная4= %s, Переменная5= %s", $var1, $var2, $var3, $var4, $var5)
MsgBox(0, "Пример", $msg)
Если вы используете функцию Send для отправки содержимого переменной, имейте в виду, что если эта переменная содержит специальные символы, такие как ! ^ + {SPACE}, то при отправке они будут переведены в специальные сочетания клавиш. А это вряд ли то, что вам нужно. Для предотвращения подобных случаев используйте отправку каждого символа “как есть” - с помощью параметра, как в коде ниже:
Send($myvar, 1)
Как правило, возвращаемое значение служит индикатором успешного выполнения функции. Но, если функция возвращает значение при любом исходе (например функция WinGetText), то необходим способ выяснить успешность выполнения. В таких случаях выставляется макро @error.
Если вы хотите завершить скрипт по нажатию определенной комбинации клавиш, используйте функцию HotKeySet, которая запускает заданную пользователем функцию при нажатии указанной комбинации клавиш. Эта пользовательская функция должна содержать ключевое слово Exit.
Ниже приведен код, который завершает скрипт при нажатии комбинации клавиш CTRL+ALT+x
HotKeySet("^!x", "MyExit")
; ...
; ...здесь некоторый код, который выполняется...
; ...
Func MyExit()
Exit
EndFunc
Вам надо запустить программу компиляции скриптов (а не просто выбрать “Компиляция/Compile” при клике правой кнопкой мыши на файл скрипта). Эта страница справки описывает работу компилятора более подробно. Также используйте AutoIt3Wrapper, чтобы указывать иконку в самом скрипте с помощью директив.
Используйте функцию _Singleton(). Посмотрите раздел справки по пользовательским функциям (UDF) для более подробной информации по работе этой функции и способов ее применения.
Ниже вы найдите текущие технические ограничения налагаемые на AutoIt. Имейте в виду, что некоторые ограничения сугубо теоретические и вы скорее достигнете пределы производительности или операционной памяти, прежде чем сработает ограничение. Также смотрите раздел Ограничения AutoIt3 и значения по умолчанию
Значение | Описание |
---|---|
2 147 483 647 | Максимальная длина строковой переменной. Учитывая ограничение 2 Гб на один процесс и символы находящиеся в памяти в Юникоде, это заметно снижает указанную величину. |
без ограничения | Максимальное кол-во GUI-окон. |
5100 | Максимальный уровень вложенности рекурсивного вызова функций. |
без ограничения | Максимальное кол-во пользовательских функций. |
без ограничения | Максимальное кол-во используемых в скрипте переменных. |
от 1.7E–308 до 1.7E+308 | Диапазон чисел с плавающей точкой с точностью до 15 знаков после запятой. |
Диапазон целых чисел : 64-битный целый знаковый тип. | |
от 0x80000000 до 0x7FFFFFFF | Диапазон шестнадцатеричных чисел: 32-битный целый знаковый тип. |
64 | максимальное кол-во измерений в массиве. |
16 млн | общее кол-во элементов в массиве. |
Это должна была быть кнопка “Открыть/Open”, которая открывает примеры из справки в окне редактора. Такого рода ошибка возникает, когда библиотека hhctrl.ocx неправильно зарегистрирована в системе или этот файл испорчен.
Попробуйте зарегистрировать выполнив команду "regsvr32 hhctrl.ocx" (диалог "Выполнить" по Win+R) или проверьте исправность файла.
Вы можете использовать вкладку "Поиск" в этой справке. Вы можете выполнить поиск на официальном форуме или на форуме Русское сообщество AutoIt