AutoIt v3の新しい特徴の1つは特定のタイプのウィンドウコントロールを直接操作する機能です。 ウィンドウ上に見えるほとんど全てのものは何らかの種類のコントロールです。ボタン、リストボックス、エディットフィールド、スタティックテキストは全てコントロールです。 メモ帳は実際のところ単なる大きな「エディット」コントロールなのです! AutoItのコントロール直接操作により、ただキーストロークを送信するよりもより信頼性の高い自動化が実現されます。
注意 :AutoItは標準のMicrosoftのコントロールのみ操作できます。一見、標準のMSコントロールのように見える独自のカスタムコントロールで書かれたアプリケーションは操作できません。試してみてください!
AutoItWindowInfoToolを使って興味のあるウィンドウにマウスをあてると、現在マウスが指しているコントロールの情報が得られます。
ほとんどのControl...()関数が持つcontrolIDパラメータで特別な記法を使用することができます。この記法を使うと次のプロパティを使ってコントロールを識別することができます:
コントロールコマンドの controlID パラメータには1つ以上のプロパティを次のフォーマットで使用できます:
[PROPERTY1:Value1; PROPERTY2:Value2]
ノート: この特別な記法を使用しない場合、そのパラメータはコントロールのコントロールID(数値の場合)またはClassnameNN/テキスト(文字列の場合)として扱われます。特別な記法はそれらの方法よりも長い記述になりますがより明確です。
Value部分に";"が含まれる場合は、2回記述してください。
例: メモ帳ウィンドウの1つ目のEditコントロールにテキストを送信します。
ControlSend("Untitled - Notepad", "", "[CLASS:Edit; INSTANCE:1]", "This is some text")
または
ControlSend("Untitled - Notepad", "", "[CLASSNN:Edit1]", "This is some text")
または
ControlSend("Untitled - Notepad", "", "Edit1", "This is some text")
例: "My Window"のコントロールID 254をクリックします。
ControlClick("My Window", "", "[ID:254]")
または
ControlClick("My Window", "", 254)
例: .NET Winformsの"textBoxFolder"コントロールに"C:\Some\Folder"を設定します。
ControlSetText("My Window", "", "[NAME:textBoxFolder]", "C:\Some\Folder")
例: "Finish"というテキストを含む"Button"コントロールの2番目のインスタンスをクリックします。
ControlClick("My Window", "", "[CLASS:Button; TEXT:Finish; INSTANCE:2]")
ControlGetHandle関数を使用してコントロールのハンドル、HWNDを取得することができます。ハンドルとはWindowsがコントロールに与える固有の識別子です。ハンドルはそのコントロールが作成されるたびに変わります。この方法によるコントロールへのアクセスはハンドルの動作をよく知っているユーザーのためだけに用意されています。
コントロール操作のための関数一覧についてはFunction Reference \ Window Management \ Controlsの下部を参照。