AutoIt

**AutoIt**（オートイット）はWindows用のプログラミング言語である。

AutoItはWindows用プログラムのGUI自動操作機能を主な特徴としている。スクリプトは実行形式にコンパイル可能であり、コンパイルしたものはAutoItインタプリタのインストールされていない環境でも動作する。フリーウェアであり非常に多くのライブラリ、開発ツールが存在する。

## 主な特徴
*実行環境はWindows
*TCPとUDPをサポート 
*COMオブジェクトをサポート
*DLLをサポート
*コンソールアプリケーションの実行と標準ストリームへのアクセスが可能
*GUI、メッセージボックス、入力ボックスの作成が可能
*音声ファイルの制御可能
*マウス操作のシミュレートが可能
*ウィンドウ、プロセスの操作が可能
*アプリケーション、アプリケーション内の各コントロールへの入力、キーストロークの送信が可能
*スクリプトをスタンドアローンの実行形式にコンパイル可能
*Unicodeをサポート(v3.2.4.0以降)
*64ビットコードをサポート(v3.2.10.0以降)
*正規表現をサポート
*Windows Vistaのユーザーアカウント制御に対応

## 歴史
* 1998年12月 - C言語によるキーストローク送信のアイデアが提案される。
* 1999年1月 - AutoIt v1.0 リリース。
* 1999年8月 - AutoIt v2、AutoItX リリース。
* 1999年9月 - AutoIt用コンパイラ リリース。
* 2002年12月 - AutoIt v3 (ベータ版)。
* 2004年2月 - AutoIt v3 (安定版)。
* 2006年9月 - Auto3Lib 開始。
* 2007年11月 - AutoIt v3.2.10.0 リリース。Auto3LibがAutoIt v3に組み込まれる。
* 2008年5月 - AutoIt v3.2.12.0 リリース。GUI関数が追加される。
* 2008年12月 - AutoIt (及びAutoItX) v3.3.0.0 リリース。

AutoItはもともとはGPLライセンスの下でソースコードの公開をおこなっていたが、現在はソースコードの公開は中止されている。これは別プロジェクトが繰り返しAutoItのソースコードを取り込んだ上でAutoItに対して敵対的な行動をとったため、と説明されている。

## 例
### Hello World!

```autoit
; メッセージボックスに "Hello, world!" と表示して終了。
MsgBox(0, "Title", "Hello, world!")
Exit
```


### 平均値を計算

```autoit
; ユーザーが入力した数値の平均を求める
; 数値はカンマ(",")で区切られていなければならない
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <Array.au3>
 
#region---------------GUI----------------------- 
$form = GUICreate("平均計算", 300, 75)
$label = GUICtrlCreateLabel("平均を計算する数値をカンマ("","")で区切って入力", 20, 5)
$textbox = GUICtrlCreateInput("", 20, 20, 220)
$label1 = GUICtrlCreateLabel("=", 245, 20, 30, 20)
$ansLabel = GUICtrlCreateLabel("", 255, 20, 50, 20)
$button = GUICtrlCreateButton("平均を計算", 100, 45)
GUISetState(@SW_SHOW)
#endregion---------------END GUI-----------------------
 
While 1
        $msg = GUIGetMsg()
        If $msg = $GUI_EVENT_CLOSE Then Exit
        If $msg = $button Then
                If _findAvg(GUICtrlRead($textbox)) = "malform1" Then
                        GUICtrlSetData($ansLabel,"エラー")
                Else
                        GUICtrlSetData($ansLabel, _findAvg(GUICtrlRead($textbox)))
                EndIf
        EndIf
WEnd
 
Func _findAvg($nums)
        Local $sData
        Local $ans
        ;入力チェック----------------->
        $chk = StringRight($nums, 5)
        If $chk = "," Then $nums = StringTrimRight($nums, 1)
        If StringInStr($nums, ",") < 1 Then
                Return ("malform1")
        EndIf
        ;----------------->
        $sData = StringSplit($nums, ",")
        $ans = 0
        For $i = 1 To $sData[0]
                $ans += $sData[$i]
        Next
        $ans = $ans / $sData[0]
        Return ($ans)
EndFunc   ;==>_findAvg
```


## AutoItX
COMインターフェイス、DLLをサポートしているスクリプト言語、プログラミング言語向けにAutoItXというDLL形式ファイルが用意されている。AutoItXを使用することでAutoItの組み込み関数の一部を他の言語から使用することが可能である。
### 使用例
Perl

```perl
use Win32::OLE;
$oAutoIt = Win32::OLE->new("AutoItX3.Control");
$oAutoIt->Run("Notepad.exe", "");
```

Ruby

```ruby
require 'win32ole'
oAutoIt = WIN32OLE.new('AutoItX3.Control')
oAutoIt.Run("Notepad.exe", "")
```

Python

```python
import win32com.client
oAutoIt = win32com.client.Dispatch("AutoItX3.Control")
oAutoIt.Run("Notepad.exe", "")
```

## 参照


## 外部リンク
* 公式ウェブサイト
* ドキュメントの日本語訳
* 付属ライブラリのドキュメントの日本語訳
* AutoItXのドキュメントの日本語訳