AutoItには他のプログラム言語、スクリプト言語から使うためのAutoItXというDLLバージョンがある。AutoItXを使うとキーボード操作やマウス操作などのAutoItに特徴的な機能の一部を他の言語から使うことができる。

今回はJavaScript(JSctipt)、Perl、Python、Ruby、VBSでAutoItXの動作を試してみた。サンプルスクリプトではメモ帳を起動してそこに「Hello world!」と入力する。

まず普通にAutoItで書いた場合。

Run("Notepad.exe", "")
WinWaitActive("無題 - メモ帳")
Send("Hello world{!}")

JavaScript(JSctipt)で書いた場合。

// tested with Windows Script Host Version 5.7
oAutoIt = new ActiveXObject("AutoItX3.Control");
oAutoIt.Run("Notepad.exe", "");
oAutoIt.WinWaitActive("無題 - メモ帳");
oAutoIt.Send("Hello world{!}");

Perlで書いた場合。

# tested with perl v5.14.2
use Win32::OLE;
$oAutoIt = Win32::OLE->new("AutoItX3.Control");
$oAutoIt->Run("Notepad.exe", "");
$oAutoIt->WinWaitActive("無題 - メモ帳");
$oAutoIt->Send("Hello world{!}");

Pythonで書いた場合。

# coding=sjis
# tested with Python 2.5.5
import win32com.client
oAutoIt = win32com.client.Dispatch("AutoItX3.Control")
oAutoIt.Run("Notepad.exe", "")
oAutoIt.WinWaitActive("無題 - メモ帳")
oAutoIt.Send("Hello world{!}")

Rubyで書いた場合。

#!ruby -Ks
# tested with ruby 1.9.2p290
require 'win32ole'
oAutoIt = WIN32OLE.new('AutoItX3.Control')
oAutoIt.Run("Notepad.exe", "")
oAutoIt.WinWaitActive("無題 - メモ帳")
oAutoIt.Send("Hello world{!}")

VBSで書いた場合。

' tested with Windows Script Host Version 5.7
Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
oAutoIt.Run "Notepad.exe", ""
oAutoIt.WinWaitActive "無題 - メモ帳"
oAutoIt.Send "Hello world{!}"

前提としてシステムにAutoItXがインストールされている必要があるが、AutoItをインストーラでインストールしていれば通常は問題ない。配布時は「regsvr32.exe AutoItX3.dll」でAutoItX3.dllを配布先システムのレジストリに登録しておくことが必要。レジストリを汚したくない場合はマニフェストファイルを使うとレジストリへの登録を回避できるらしい(未検証)。

AutoItX3.dllそのものやAutoItXについてのドキュメントはAutoItインストールフォルダにあるAutoItXフォルダに置かれている。

Perl、Python、Rubyに関してはwin32用のモジュールを使う必要があるがそれぞれWindows向けのパッケージをインストールすると標準でインストールされていた。サンプルスクリプトの文字コードは全てshift-jisを使っている。

関連:
【日本語訳】AutoItX ドキュメント
AutoIt v3 ドキュメント 日本語訳プロジェクト
【読後評】まつもとゆきひろ「コードの世界」