そういえば書いていなかったな、ということで。AutoItをインストールしたけどその後どうすればいいの?入門編として基本的な書き方、使い方をメモしておきます。
1. インストール
インストールは以前書いた記事を参照してください。
2. 拡張子はau3でテキストエディタなんでもOK
ファイルの拡張子を.au3にすればOKです。
筆者はsublime text3を使っていますが、メモ帳でもAutoItインストール時に附属されるSciTE(au3ファイルをダブルクリックしたら開くアプリ)でもOKです。
3. #include、コメントアウト、変数定義、関数、文字列連結の&
3.1 include
#include <xx.au3> でAutoItインストールフォルダ\Include\内のライブラリを
#include “yy.au3” で自分で作成したau3をincludeします。
スクリプト上部に書いておきましょう。
3.2 コメントアウト
3.2.1 1行コメントアウト
; (セミコロン)がその後をコメントアウトです
; 行の先頭に書けばその行コメントアウト
ConsoleWrite(“test”) ;ここにかけばそれ以降コメントアウト
3.2.2 複数行は#cs #ceで囲む
多分#cs=Comment start、#ce=Comment end だと思います。
下記だと2行コメントアウトされます。
#cs
ConsoleWrite(“”)
Local $a=1
#ce
3.3 変数定義 (大文字小文字区別しない)
$a = 1 ドルマーク+半角英数字で変数定義です。
大文字小文字区別しません。
$A=1
$a=2
とすると、$Aは2になります。
不本意なエラーを避けるためにも、関数の引数も被らないようにしたほうが良さそうです。
3.4 関数
関数は
Func getdata($a,$b=0)
return $a + $b
EndFunc
で定義出来ます。
3.5 文字の連結は &を使う
$str1 = “今日は”
$str2 = “いい天気”
という「文字列」を繋げるには
$str = $str1 & $str2
となります。
ConsoleWrite( “ret=” & $str & @CRLF )
ret=今日はいい天気(改行)
という感じ
4. エラー処理
Return False、とかでもいいのですが、SetError(1,4,”メッセージ”)とすると@error, @extended に1,4がセットされ第3引数は戻り値。関数が呼ばれると@error=0,@extended=0にセットされるので、関数内でSetError()呼ばないのに、関数呼んだ後に@errorを参照すると0なので、注意。
そういう場合は変数に@errorのバックアップとっておくこと。
$ret = func($a) ;$retには”失敗ですね”が入る
;; ここの時点で@error=1、@extended=2になるのでそれぞれの条件に合わせて処理を進める
Func func($val)
Return SetError(1,2,”失敗ですね”) ;@error=1,@extended=2がセットされる
EndFunc
5. 64bitOSには最初にUseX64=yを
SciTEでビルドする時の話ですが、デバッグする時はSciTE使うと思うので最初に設定を記載しておきましょう。
#AutoIt3Wrapper_UseX64=y
5. アプリをコントロールするにはsleepやwaitでちょっと置く
起動したらすぐ次の処理・・というのではなく、何かアプリやプロセスを起動したら準備が出来るのを待ちましょう。
ShellExecute(“Notepad.exe”)
WinWaitActive(“[CLASS:Notepad]”)
Sleep(1000) ;アプリによっては更にSleepで待ったり
下記FunctionReferenceで waitで検索して関数を探してみてください。
ただ、これだと同じ名前のウィンドウがあると判別出来ないので、UIAutomationだと例えばExcelの太字(Bold)ボタンなども取得できるので、あるコントロールを取得出来るまで待つ、といったことも出来ます。
6. とにかくサンプルコードを実行して確かめてみる
だらだらと書きましたが、実際に動くソースがあったほうが良いので、他記事を書いた時のサンプルソースリンクを下記に貼っておきます。
例えばexcelpassword.au3だと、エクセルに読み込み時パスワードをかけて保存するサンプルです。
スクリプトと同じフォルダにtest.xlsx(エクセルファイル)を置いて実行すると、test2.xlsxというファイルが出来上がり、そのファイルを開こうとするとtest1というパスワードが必要になります。
コメント