Введение

Компиляция скриптов с помощью Aut2ExeПравить

Имеется возможность скомпилировать ваш .au3-скрипт в автономный исполняемый файл; этот файл может использоваться на машинах без установленного AutoIt (AutoIt3.exe не будет нужен для работы такого файла). В дополнение, скомпилированный скрипт сжат и зашифрован, как и дополнительные файлы, включённые в скрипт с помощью функции FileInstall. Также, любые файлы, включённые в скрипт с помощью #include тоже будут скомпилированы в исполняемый файл, так что они не понадобятся при запуске скрипта.

Осторожно: скрипт для компиляции не должен содержать синтаксических ошибок, поскольку программа компиляции не проверяет синтаксис.
Aut2Exe может быть использован тремя путями:

_IsBeta

#include <Array.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
    Local $aTest10
    _ArrayUnique($aTest, , 5)
    Local $iError = @error
    ConsoleWrite('$iError = ' & $iError & @CRLF)
    If _IsBeta() Then
        If $iError = 3 Then
            MsgBox($MB_SYSTEMMODAL, '@error', '3 - $iBase or $iCase contains an invalid value' & @CRLF & @AutoItVersion)
        EndIf
    Else
        If $iError = 2 Then
            MsgBox($MB_SYSTEMMODAL, '@error', '2 - $iBase or $iCase contains an invalid value' & @CRLF & @AutoItVersion)
        EndIf
    EndIf
EndFunc   ;==>Example

Func _IsBeta()
       Return Mod(StringSplit(@AutoItVersion, '.'), 2) == 1
EndFunc   ;==>_IsBeta

Полезные ресурсы

Руководства / Учебники

      • Руководства — на этой странице есть много учебников, о AutoIt. Там представлен обзор нескольких известных учебных пособий.
      • Лучшие методы кодирования — подробное объяснение того, что следует считать лучшими практиками кодирования в AutoIt. Эти рекомендации основаны на общепринятых практиках программирования, общих для ряда других языков программирования. Вам не нужно следовать им, но рекомендуется использовать их в своей практике.
      • Сниппеты — как правило, отдельные функции или небольшие кусочки кода, которые могут быть включены в сценарий для добавления дополнительной функциональности
        .

Видеоуроки

      • AutoIt Tutorials by 403forbidden403.
      • AutoIt Tutorials by AutoitFrench.
      • AutoIt for Beginner by Lee Sai.
      • AutoIt for Beginner by Hai The Luong.
      • Advanced AutoIt Tutorials by Juno_okyo

Книги

      • AutoIt v3: Your Quick Guide by Andy Flesner (Скачать PDF).
      • Instant AutoIt Scripting by Emilio Aristides de Fez Laso.
      • AutoIT Scripting For Beginners by Rajan.
      • Learn To Program Using FREE Tools with AutoIt 1.2 by Jfish.

Подсветка синтаксиса

    • GeSHi — Generic Syntax Highlighter
    • Highlight.js
    • Crayon Syntax Highlighter (WordPress плагин)
    • WP Syntax (WordPress плагин) — основан на GeSHi.
    • PrismJS
    • AutoIt — Visual Studio

FileOpen

Во-первых, нам нужно «открыть» новый файл с помощью функции FileOpen (которую также можно использовать для открытия существующего файла).

FileOpen имеет два параметра: имя файла (которое должно включать путь к нашему файлу) и необязательный параметр «mode», используемый для определения определенных параметров, например, переписываем ли мы данные в файл, добавляем и т.д.

Одна строка кода создаст наш новый файл:

Это макрос. Теперь нам нужно понять, что этот макрос является ярлыком, который предоставляет путь к каталогу, в котором находится наш скрипт. Если бы у нас не было этого ярлыка, нам пришлось бы использовать полный путь, такой как «c: \ documents and settings \ user \ files \ autoit\myfile.txt». Другое преимущество заключается в том, что наша программа может запускаться на компьютерах других людей, которые имеют разные папки и каталоги. Если их папки отличаются, ваша программа может не работать. Использование макроса гарантирует, что независимо от пути — ваш скрипт найдет его

Обратите внимание на использование амперсанда и обратную косую черту перед именем файла. Это добавляет обратную косую черту и имя файла в путь к скрипту.
Это то, как мы навезем наш файл

В нашем случае «myfile.txt».
Это дополнительный параметр режима. В этом случае мы используем 2, который сигнализирует функции, что мы хотели бы перезаписать все, что находится в файле.

FileOpen возвращает «дескриптор», который мы сохраняем в нашей переменной $ myFile, когда эта строка кода выполняется. Вы можете использовать этот дескриптор для последующих функций файла.

AutoIt

$myFile = FileOpen(@ScriptDir & «\myfile.txt», 2)

1 $myFile=FileOpen(@ScriptDir&»\myfile.txt»,2)

Hello, World!

Файлы скриптов имеют расширение .au3. Запуск осуществляется командой наподобие следующей:

<путь>\AutoIt3.exe скрипт.au3

Кроме того, если используется полная установка AutoIt, запуск скриптов производится просто двойным щелчком по файлу скрипта.

Простейший скрипт:

; комментарий
MsgBox(0, "Заголовок окна", "Привет, AutoIt!")

Скрипт выше выведет диалоговое окно с приветствием. Первый аргумент функции MsgBox определяет тип сообщения (в данном случае — окно с единственной кнопкой ОК, без дополнительных опций).

Можно исполнить код на языке AutoIt динамически, из командной строки, например:

AutoIt3.exe /AutoIt3ExecuteLine "MsgBox(0, 'Hello World!', 'Привет!')"

Следующий пример демонстрирует возможность автоматизации произвольных GUI-приложений:

Run("notepad.exe") ; запускаем Блокнот
WinWaitActive("Безымянный - Блокнот") ; ожидаем появление окна Блокнота
Send("Какой-то текст.") ; посылаем нажатия (имитируем ввод)
WinClose("Безымянный - Блокнот") ; посылаем окну команду закрытия
; ожидаем появление окна запроса о сохранении:
WinWaitActive("Блокнот", "Текст в файле Безымянный был изменен.")
Send("{ESC}") ; посылаем нажатие Escape (имитируем ввод)

Скрипт выше запускает Блокнот, печатает в него текст, посылает окну Блокнота команду закрытия, а затем отказывается от закрытия, посылая нажатие Escape окну запроса о сохранении. Эти приёмы демонстрируют возможность автоматизации произвольных приложений, даже тех, которые не поддерживают опций командной строки или специальных программных средств автоматизации. AutoIt просто имитирует пользовательский ввод. Такие возможности скриптового языка могут стать спасательным кругом для решения многих проблем, например, автоматической инсталляции некоторых приложений.

Следующий пример демонстрирует назначение глобальных горячих клавиш:

; установка глобального перехвата нажатия клавиши Escape:
HotKeySet("{ESC}", "Terminate")
; установка глобального перехвата нажатия комбинации клавиш Alt+Shift+1
HotKeySet("+!1", "ShowMessage")
; тело основной программы
While 1
    Sleep(100)
WEnd

; функции
Func Terminate() ; по нажатию клавиши Escape
    Exit 0 ; завершение работы
EndFunc

Func ShowMessage() ; по нажатию комбинации клавиш Alt+Shift+1
    MsgBox(4096, "", "Вы нажали Alt+Shift+1.")
EndFunc

Скрипт выше устанавливает глобальный перехват нажатий Escape и Alt+Shift+1 (после запуска в трее появится иконка скрипта). При нажатии Alt+Shift+1 выдаётся сообщение, а при нажатии Escape скрипт завершает работу (активное окно в момент нажатий не имеет значения — перехват глобальный). Эти приёмы позволяют сильно автоматизировать работу пользователя. На нажатие различных клавиш можно «повесить» запуск приложений или выполнение определённых действий в нужном приложении т.п.

Синтаксис работы с COM-объектами прозрачен, как и в большинстве бейсикоподобных языков:

$wsh = ObjCreate("WScript.Shell") ; создание объекта
if @error then exit(1) ; проверка ошибки
$wsh.popup("сообщение") ; вызов метода

Скрипт выше выдаст окно с текстом «сообщение».

Example

; copy any you want to change   ;default value is listed first

Opt("CaretCoordMode",1);1=absolute, 0=relative, 2=client
Opt("ExpandEnvStrings",);0=don't expand, 1=do expand
Opt("ExpandVarStrings",);0=don't expand, 1=do expand
Opt("GUICloseOnESC",1);1=ESC  closes, 0=ESC won't close
Opt("GUICoordMode",1);1=absolute, 0=relative, 2=cell
Opt("GUIDataSeparatorChar","|");"|" is the default
Opt("GUIOnEventMode",);0=disabled, 1=OnEvent mode enabled
Opt("GUIResizeMode",);0=no resizing, <1024 special resizing
Opt("GUIEventOptions",);0=default, 1=just notification, 2=GUICtrlRead tab index
Opt("MouseClickDelay",10);10 milliseconds
Opt("MouseClickDownDelay",10);10 milliseconds
Opt("MouseClickDragDelay",250);250 milliseconds
Opt("MouseCoordMode",1);1=absolute, 0=relative, 2=client
Opt("MustDeclareVars",);0=no, 1=require pre-declaration
Opt("PixelCoordMode",1);1=absolute, 0=relative, 2=client
Opt("SendAttachMode",);0=don't attach, 1=do attach
Opt("SendCapslockMode",1);1=store and restore, 0=don't
Opt("SendKeyDelay",5);5 milliseconds
Opt("SendKeyDownDelay",1);1 millisecond
Opt("TCPTimeout",100);100 milliseconds
Opt("TrayAutoPause",1);0=no pause, 1=Pause
Opt("TrayIconDebug",);0=no info, 1=debug line info
Opt("TrayIconHide",);0=show, 1=hide tray icon
Opt("TrayMenuMode",);0=append, 1=no default menu, 2=no automatic check, 4=menuitemID  not return
Opt("TrayOnEventMode",);0=disable, 1=enable
Opt("WinDetectHiddenText",);0=don't detect, 1=do detect
Opt("WinSearchChildren",1);0=no, 1=search children also
Opt("WinTextMatchMode",1);1=complete, 2=quick
Opt("WinTitleMatchMode",1);1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase
Opt("WinWaitDelay",250);250 milliseconds

AutoItWinShow

#include <GUIConstantsEx.au3>

Example()

Func Example()
    ; Display AutoIt's Hidden Window. See AutoItWinGetTitle and AutoItWinSetTitle for more details.
    AutoItWinShow()

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
EndFunc   ;==>Example

; Display AutoIt's Hidden Window. Returns the handle of the window.
Func AutoItWinShow()
    Local Const $hWnd = WinGetHandle(AutoItWinGetTitle()) ; Get the handle of the AutoIt Hidden Window by finding out the title of the AutoIt Hidden Window.
    WinMove($hWnd, '', (@DesktopWidth  2) - 250, (@DesktopHeight  2) - 250, 500, 500) ; Move the AutoIt Hidden Window and re-size for a better view of the data that will be set.
    WinSetState($hWnd, '', @SW_SHOW) ; Show the AutoIt Hidden Window, normally this is hidden, but in the interest of this example I'm displaying it.
    Return $hWnd
EndFunc   ;==>AutoItWinShow

Метод 3 — Командная строкаПравить

Синтаксис командной строки при запуске программы Aut2Exe.exe:

Aut2exe.exe /in <путь к файлу .au3>

Здесь:

Ключ Использование Значение по умолчанию
/in <путь к файлу.au3> Указывает путь к файлу скрипта для компиляции. Нет. Путь к файлу должен быть указан
/out <путь к файлу.exe> Указывает путь к выходному файлу.<путь к файлу.a3x> Указывает путь к выходному файлу для создания *.a3x файла. Имя входного файла с расширением .exe
/icon <путь к файлу .ico> Указывает путь к иконке для скомпилированного файла. Иконка AutoIt
/comp Указывает уровень сжатия скрипта и включённых файлов (Это НЕ относится к UPX).Число между 0 (нет) и 4 (максимум). 2
/nopack Указывает, что файл не должен быть сжат с помощью UPX после компиляции. pack
/pack Указывает, что файл должен быть сжат с помощью UPX после компиляции. pack
/x64 Указывает, что скрипт должен быть скомпилирован для системы с архитектурой x64 (64-битная). См. замечания
/x86 Указывает, что скрипт должен быть скомпилирован для системы с архитектурой x86 (32-битная). См. замечания
/console Указывает, что скрипт должен быть скомпилирован, как консольное приложение. Оконное приложение (/gui)
/gui Указывает, что скрипт должен быть скомпилирован, как оконное приложение. Оконное приложение (/gui)
/bin <путь к файлу.bin> Указывает путь к бинарной основе для компиляции скрипта. Используется файл из каталога Aut2exe

Инструменты

      • SciTE4AutoIt3 содержит SciTE, упакованный в единый установщик со всеми необходимыми параметрами конфигурации и множеством служебных программ, таких как AutoIt3Wrapper, SciTEConfig, Tidy, Au3Stripper и т. д., для расширенного SciTE для использования с AutoIt3.
      • KODA Form Designer — автономное приложение, разработанное для помощи в создании форм (GUI) для языка сценариев AutoIt3. Оно включено в SciTE4AutoIt3.
      • ISN AutoIt Studio — готовая IDE для программирования на языке AutoIt.
      • ISN AutoIT form Studio — графический интерфейс для разработки в AutoIt.
      • AutoIt Obfuscator — зашифруйте исходный код и алгоритмы сценария AutoIt, чтобы защитить его от анализа, взлома и декомпиляции.

_RunAU3

_RunAU3("AU3_Example.txt", '"This is a commandline example!"')

Func _RunAU3($sFilePath,  $sCommandLine = "", $sWorkingDir = "", $iShowFlag = @SW_SHOW, $iOptFlag = )
    Return Run('"' & @AutoItExe & '" AutoIt3ExecuteScript "' & $sFilePath & '" ' & $sCommandLine, $sWorkingDir, $iShowFlag, $iOptFlag)
EndFunc   ;==>_RunAU3

Func _RunWaitAU3($sFilePath, $sCommandLine = "", $sWorkingDir = "", $iShowFlag = @SW_SHOW, $iOptFlag = )
    Local $iPID
    $iPID = RunWait('"' & @AutoItExe & '" AutoIt3ExecuteScript "' & $sFilePath & '" ' & $sCommandLine, $sWorkingDir, $iShowFlag, $iOptFlag)
    If @error Then
        Return SetError(@error, 1, )
    EndIf
    Return $iPID
EndFunc   ;==>_RunWaitAU3

_WinGetDetails

#include <Array.au3>

Global $aArray = _WinGetDetails('ACTIVE') ; Returns the Window's title, PID, folder path filename.

If @error Then
    Exit
EndIf

_ArrayDisplay($aArray)

Func _WinGetDetails($sTitle, $sText = '') ; Based on code of _WinGetPath by GaryFrost.
    Local $aReturn5 = 4, '-WinTitle', '-PID', '-FolderPath', '-FileName'], $aStringSplit

    If StringLen($sText) >  Then
        $aReturn1 = WinGetTitle($sTitle, $sText)
    Else
        $aReturn1 = WinGetTitle($sTitle)
    EndIf
    $aReturn2 = WinGetProcess($aReturn1])

    Local $oWMIService = ObjGet('winmgmts\\.\root\CIMV2')
    Local $oItems = $oWMIService.ExecQuery('Select * From Win32_Process Where ProcessId = ' & $aReturn2], 'WQL', 0x30)
    If IsObj($oItems) Then
        For $oItem In $oItems
            If $oItem.ExecutablePath Then
                $aStringSplit = StringSplit($oItem.ExecutablePath, '\')
                $aReturn3 = ''
                For $A = 1 To $aStringSplit - 1
                    $aReturn3 &= $aStringSplit$A & '\'
                Next
                $aReturn3 = StringTrimRight($aReturn3], 1)
                $aReturn4 = $aStringSplit$aStringSplit]]
                Return $aReturn
            EndIf
        Next
    EndIf
    Return SetError(1, , $aReturn)
EndFunc   ;==>_WinGetPath

Example

Example()

Func Example()
; Simulate the key combination Win + R to open the Run dialogue window.
Send("#r")

; Wait 10 seconds for the Run dialogue window to appear.
WinWait("Run","",10)

; Simulate entering notepad.exe and pressing the 'ENTER' key.
Send("notepad.exe{Enter}")

; Wait 10 seconds for the Notepad window to appear.
Local$hWnd=WinWait("","",10)

; Simulate entering the following string and pressing the 'F5' key to input the date and time into edit control of Notepad.
Send("Today's time/date is {F5}")

; Close the Notepad window using the handle returned by WinWait.
WinClose($hWnd)

; Now a screen will pop up and ask to save the changes, the classname of the window is called
; "#32770" and simulating the "TAB" key to move to the second button in which the "ENTER" is simulated to not "save the file"
WinWaitActive("")
Sleep(500)
Send("{TAB}{ENTER}")
EndFunc;==>Example

_GetClasses

; Get ALL Controls Info

Example()

Func Example()
	; Run Calculator
	Run("calc.exe")

	; Wait 10 seconds for the Calculator window to appear.
	Local const $hWnd = WinWait("", '', 10)

	; Retrieve a list of all the controls in the Calculator window using the handle returned by WinWait.
	MsgBox(4096, '', _GetClasses($hWnd))

	; Close the Calculator window using the handle returned by WinWait.
	WinClose($hWnd)
EndFunc   ;==>Example

; This function returns an @LF-separated list of controls on the specified window.
Func _GetClasses($sTitle, $sText = '')
	Local $iCount_Button = , $iCount_Edit = , $iCount_Static = 
	Local $aClasses = StringSplit(WinGetClassList($sTitle, $sText), @LF)
	Local $aClassID$aClasses + 1 = $aClasses]]

	For $i = 1 To $aClasses
		Select
			Case $aClasses$i = "Button"
				$iCount_Button += 1
				$aClassID$i = $aClasses$i & $iCount_Button
			Case $aClasses$i = "Edit"
				$iCount_Edit += 1
				$aClassID$i = $aClasses$i & $iCount_Edit
				$aClasses$i = "Input"
			Case $aClasses$i = "Static"
				$iCount_Static += 1
				$aClassID$i = $aClasses$i & $iCount_Static
				$aClasses$i = "Label"
			Case Else
				If $aClasses$i <> "" Then
					$aClassID$i = $aClasses$i & "?"
				EndIf
		EndSelect
	Next

	; Combine the results.
	Local $sReturn = ""

	For $i = 1 To $aClassID
		$sReturn &= $aClassID$i & @LF
	Next

	Return $sReturn
EndFunc   ;==>_GetClasses

Command Line Parameters

Passing command line parameters to your own executable is achievable in AutoIt. Passed commandline parameters can be viewed by using the constant variables $CmdLine and $CmdLineRaw. Assigning these variables with new data will cause AutoIt to
return an error, as these cannot be changed during the script’s execution. Note that both variables exist whether commandline parameters are passed or not.

The special array $CmdLine is initialized at the start of the script with the command line parameters passed to your AutoIt script. If running your script instead of the executable, then the ScriptName.au3 willl be ignored as a parameter.
If you’re passing strings with spaces, then you will need to escape these using «double quotes» in your commandline string.

$CmdLine; Contains the total number of items in the array.$CmdLine1; The first parameter.$CmdLine2; The second parameter….$CmdLinenth; The nth parameter e.g. 10 if the array contains 10 items.

AutoIt3.exe myScript.au3 param1 «This is a string parameter»99

$CmdLine; This contains 3 parameters.$CmdLine1; This contains param1 and not myScript.au3 as this is ignored when running non-compiled.$CmdLine2; This contains This is a string parameter.$CmdLine3; This contains 99.$CmdLineRaw; This contains myScript.au3 param1 «This is a string parameter» 99.

myProg.exe param1 «This is a string parameter»99

$CmdLine; This contains 3 parameters.$CmdLine1; This contains param1.$CmdLine2; This contains This is a string parameter.$CmdLine3; This contains 99.

Note: A maximum of 63 parameters can be returned by the array $CmdLine[]. If you would like to see the entire commandline string passed to an AutoIt executable, then use $CmdLineRaw for the entire parameter string.

#include<Array.au3>#include<WinAPIShPath.au3>; An alternative to the limitation of $CmdLine[] only being able to return a maximum of 63 parameters.Local$aCmdLine=_WinAPI_CommandLineToArgv($CmdLineRaw)_ArrayDisplay($aCmdLine)

История создания

AutoIt появился в конце 1998 года, как Си-программа для автоматизации нажатия клавиш. В январе 1999 года команда разработчиков выпустила AutoIt версии v1, который включал в себя следующие команды: Send, Run, RunWait, WinWait, WinWaitClose, WinWaitActive, WinHide, WinActivate, WinClose, WinRestore, Sleep и SetKeyDelay. AutoIt v2 был выпущен в августе того же года и включал первый вариант AutoItX, который предложил DLL / COM контроль. В течение следующих двух лет в язык были добавлены множество новых функций. В мае 2001 года исходный код AutoIt был полностью переписан на C++ и его развитие не останавливается до 2003 года, когда была выпущена первая бета-версия AutoIt v3. Спустя 100 бета-версии разработчики выпустили AutoIt v3 в феврале 2004 года. Февраль 2005 года был ознаменован выпуском AutoIt v3.1.0, в котором была добавила возможность создания графического пользовательского интерфейса (GUI). Эта версия была самымой заметной из всех, она выдвинула AutoIt на первый план в мире сценариев, сделала его конкурентом VisualBasic. AutoIt бесплатен в использовании и имеет сильную и полезную базу сообщества.

_WinGetNumeratedClassList

; Description: Retrieves the numerated classes from a window.

Func _WinGetNumeratedClassList($sTitle)
    Local $sClassList = WinGetClassList($sTitle)
    Local $aClassList = StringSplit($sClassList, @LF)
    Local $sRetClassList = "", $sHold_List = "|"
    Local $aiInHold, $iInHold

    For $i = 1 To UBound($aClassList) - 1
        If $aClassList$i = "" Then ContinueLoop

        If StringRegExp($sHold_List, "\|" & $aClassList$i & "~(\d+)\|") Then
            $aiInHold = StringRegExp($sHold_List, ".*\|" & $aClassList$i & "~(\d+)\|.*", 1)
            $iInHold = Number($aiInHoldUBound($aiInHold)-1])

            If $iInHold =  Then $iInHold += 1

            $aClassList$i &= "~" & $iInHold + 1
            $sHold_List &= $aClassList$i & "|"

            $sRetClassList &= $aClassList$i & @LF
        Else
            $aClassList$i &= "~1"
            $sHold_List &= $aClassList$i & "|"
            $sRetClassList &= $aClassList$i & @LF
        EndIf
    Next

    Return StringReplace(StringStripWS($sRetClassList, 3), "~", "")
EndFunc

Язык

Сам язык AutoIt близок к современным версиям BASICа: это императивный язык с небольшим набором типичных синтаксических конструкций и простой структурой. Поддерживается два вида переменных: простые (скалярные) переменные и массивы. Простые переменные имеют вариантный тип, то есть могут содержать значения любого поддерживаемого типа. Массивы в AutoIt динамические и гетерогенные (могут менять размер и содержать в ячейках значения любых типов), поддерживаются многомерные (до 64 индексов) массивы. Набор типов данных ограничен: это строки, числа, бинарные данные и логические (булевы) значения.

Доступные синтаксические конструкции включают три варианта условного оператора, циклы и объявление пользовательской функции (вложенность функций не поддерживается). Модульности как таковой в языке нет, её заменяет возможность прямого текстуального включения одних файлов в другие с помощью Си-подобной инструкции .

Системная библиотека включает широкий набор функций самого различного назначения, в том числе для работы со строками, вычислений, доступа к файлам, сетевого взаимодействия, работы с векторной и растровой графикой и данными в различных мультимедиа-форматах. В состав библиотеки входит простой GUI-фреймворк, позволяющий легко создавать и использовать типовые Windows-формы со стандартным набором элементов управления. Последняя особенность позволяет использовать AutoIt просто как язык для создания несложных программ для Windows со стандартным графическим интерфейсом

Но наиболее важно особенностью AutoIt является поддержка целого ряда специфических функций, дающих доступ к системе Windows, её настройкам и графическому интерфейсу пользователя, что позволяет выполнять симуляцию нажатия клавиш, движений мыши и манипуляции с окнами, элементами управления, отслеживать системные события и реагировать на них. Это позволяет автоматизировать задачи пользователя Windows таким образом, какой невозможен или затруднён в других языках программирования

В частности, поддерживаются следующие возможности:

  • Юникод (начиная с версии 3.2.4.0).
  • Регулярные выражения в стиле Perl (используется библиотека PCRE).
  • Запуск консольных приложений и доступ к стандартным потокам ввода-вывода.
  • Запуск программ от имени другого пользователя (функция RunAs).
  • Сжатие и защита исполняемого файла от декомпиляции с помощью упаковщика UPX
  • Создание графических интерфейсов GUI, информационных сообщений, форм ввода информации.
  • Вызов функций из динамических библиотек и функций Windows API.
  • Работа с реестром Windows, буфером обмена, файлами (чтение, изменение, копирование, удаление).
  • Работа с объектами COM (Сomponent object modelling).
  • Перехват и эмуляция клавиатурных нажатий и кликов мышки.
  • Работа с окнами (особенно легко работать с графическими элементами из Windows): передвижение, скрытие, отображение, изменение размера, активизация, закрытие. К окнам можно обращаться по их заголовку, отображаемому тексту, размеру, расположению, классу, по внутренним дескрипторам (handle) Win32 API, определяемым с помощью входящей в комплект поставки утилиты Au3Info.
  • Получение информации и взаимодействие с элементами управления (особенно стандартными): поле редактирования, переключатель, список, кнопки, статусная строка и т. д., в том числе неактивными.
  • Чтение HTML-страниц, скачивание файлов, работа с FTP, отправка E-mail сообщений, работа с базами данных MySQL и SQLite.
  • Работа с протоколами TCP и UDP.
  • Автоматизация работы в браузерах: Internet Explorer, Opera, Firefox, Google Chrome.
  • Работа со звуком и музыкой.
  • Воспроизведение видео в формате AVI.
  • Работа с векторной графикой и с популярными форматами изображений.
  • Поддержка User Account Control (UAC) в Windows Vista и выше.

_DockToWindow

#include <GUIConstantsEx.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>

If (Not ProcessExists("SciTE.exe")) Then
    Exit MsgBox(4096, '', "Please start SciTE.exe")
EndIf

Example()

Func Example()
    ; Create a GUI, similar to SciTE Jump's GUI.
    Local Const $hGUI = GUICreate('', 215, 400, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX))

    GUISetState(@SW_SHOWNORMAL, $hGUI)

    ; Dock the first window to left and adjust the width based on the width of the second GUI.
    _DockToWindow(WinGetHandle(""), $hGUI)

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd

    GUIDelete($hGUI)
EndFunc   ;==>Example

Func _DockToWindow(Const $hHandle_1, Const $hHandle_2)
    ; Retrieve the working area, this is minus the taskbar dimensions so slightly different to @DesktopHeight and @DesktopWidth which is the
    ; monitors height and width.
    Local Const $SPI_GETWORKAREA = 48
    Local Const $tWorkArea = DllStructCreate($tagRECT)
    _WinAPI_SystemParametersInfo($SPI_GETWORKAREA, , DllStructGetPtr($tWorkArea))

    ; Retieve the position of the second GUI.
    Local Const $aClientSize_2 = WinGetPos($hHandle_2)

    ; Set the state of the windows to 'Restore'.
    WinSetState($hHandle_1, '', @SW_RESTORE)
    WinSetState($hHandle_2, '', @SW_RESTORE)

    ; Move the first to the far left of the screen and adjust the width to the total screen width minus the width of the second GUI. e.g. 1366 - 215
    WinMove($hHandle_1, '', DllStructGetData($tWorkArea, 'Left'), DllStructGetData($tWorkArea, 'Top'), DllStructGetData($tWorkArea, 'Right') - DllStructGetData($tWorkArea, 'Left') - $aClientSize_22], DllStructGetData($tWorkArea, 'Bottom') - DllStructGetData($tWorkArea, 'Top'))

    ; Move the second window to the far right in between the remaining space and adjust the height of the GUI.
    WinMove($hHandle_2, '', DllStructGetData($tWorkArea, 'Right') - DllStructGetData($tWorkArea, 'Left') - $aClientSize_22], DllStructGetData($tWorkArea, 'Top'), $aClientSize_22], DllStructGetData($tWorkArea, 'Bottom') - DllStructGetData($tWorkArea, 'Top'))
EndFunc   ;==>_DockToWindow

Метод 1 — Меню ПускПравить

Доступно только при полной установке.

Окно Aut2Exe

1. Откройте Меню Пуск и найдите группу AutoIt v3.

2. Выберите Compile Script to .exe

3. Основное окно Aut2Exe должно появиться.

4. Используйте кнопку Browse для выбора входного файла (.au3) и выходного (.exe) файла.

5. Можно изменить иконку для выходного файла .exe — просто укажите путь к нужной иконке в поле Custom Icon (несколько иконок можно найти в Program Files\AutoIt3\Aut2Exe\Icons).

6. Ещё одна опция, которую вы хотели бы изменить — уровень сжатия (особенно при использовании FileInstall для добавления дополнительных файлов). Используйте пункт меню Compression, чтобы установить уровень сжатия. Чем выше уровень сжатия — тем дольше будет происходить компиляция. Но! Независимо от выбранного уровня сжатия скорость распаковки будет одинаковой.

7. Нажмите Convert, чтобы начать компиляцию.

Замечание: скрипты также могут быть скомпилированы в файлы .a3x. Для запуска таких файлов по прежнему понадобится файл AutoIt.exe. Файл .a3x содержит сам скрипт, а также файлы, включённые с помощью #include и FileInstall. Этот формат позволяет распространять небольшие по размеру файлы, не содержащие файл AutoIt3.exe в каждом скомпилированном скрипте.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector