「PyAutoItをちょっとだけ触ってみた」では、PyAutoItについて簡単な記事を投稿しました。
今回はAutoItとPyAutoItの違いについて触れたいと思います。
はじめに
PyAutoItは以前の記事で紹介した通り、AutoItをラップしたものとなっています。
そのためAutoItとメソッドの多くはPyAutoItでも共通しています。
しかしそのまま使えるわけではないので注意してください。
参考までにAutoItのメソッドについて参考リンクを貼っておきます。
Function Refarence:https://open-shelf.appspot.com/AutoIt3.3.6.1j/html/functions.htm
AutoItで使用可能な関数の一覧が見られます。
AutoItとPyAutoItでの関数の違い
実際に同じ処理をそれぞれのルールに沿ってプログラミングをしてみたいと思います。
例として、下記のシナリオをそれぞれの書き方で記述してみます。
- メモ帳を開く
- "Hello World!"と入力する
- 保存せずにメモ帳を閉じる
AutoIt
Run("notepad.exe") 'メモ帳の起動
WinWaitActive("[CLASS:Notepad]") 'メモ帳が開くまで待機
ControlSend("[CLASS:Notepad]", "", "Edit1", "hello world!") 'hello world! と入力する
WinClose ("[CLASS:Notepad]") 'メモ帳を閉じる
ControlClick ( "メモ帳", "いいえ(&N)", "Button2") '保存せずに終了する
PyAutoIt
import autoit
autoit.run("notepad.exe") #メモ帳の起動
autoit.win_wait_active("[CLASS:Notepad]", 3) #メモ帳が開くまで待機
autoit.control_send("[CLASS:Notepad]", "Edit1", "hello world{!}") #hello world! と入力する
autoit.win_close("[CLASS:Notepad]") #メモ帳を閉じる
autoit.control_click("[Class:#32770]", "Button2") #保存せずに終了する
比較
AutoItとPyAutoItを比較してみました。
操作内容 | AutoIt | PyAutoIt | 比較 |
---|---|---|---|
起動 | Run("notepad.exe") | autoit.run("notepad.exe") | 大きな違いはありませんね |
表示待機 | WinWaitActive("[CLASS:Notepad]") | autoit.win_wait_active("[CLASS:Notepad]", 3) | 引数の数が違います |
文字入力 | ControlSend("[CLASS:Notepad]", "", "Edit1", "hello world!") | autoit.control_send("[CLASS:Notepad]", "Edit1", "hello world{!}") | 内容はほぼ同じですが、ちょっと違いますね |
終了 | WinClose ("[CLASS:Notepad]") | autoit.win_close("[CLASS:Notepad]") | 内容はほぼ同じですが、ちょっと違いますね |
ボタン操作 | ControlClick ( "メモ帳", "いいえ(&N)", "Button2") | autoit.control_click("[Class:#32770]", "Button2") | 引数も内容も少々違います |
それぞれの違いについて
比較をした表を見ると、以下のことが分かりました。
-
関数の記述方法が違う
pyAutoItでは、[ _ ]で関数名が分かれています。
AutoItだと「winClose」でもPyAutoItでは「Win_Close」となっているようです。 -
引数の数が違う
WinWaitActive , Win_Wait_Active でそれぞで引数が違います。
なぜ違うのかは正直分かりません。 -
プロパティの定義が少し違う
関数内で指定するプロパティがAutoItとPyAutoItでは異なります。
何が違うのか、その法則性が分からずにいます。
終わりに
AutoIt と PyAutoIt
使える関数はほぼ共通していますが、使い方が微妙に異なるため、
AutoItの関数一覧を見ても、そのまま適用することが出来ない場合が多いです。
また、PyAutoItの関数についてまとめられているサイトや記事は私が探した限り見つからず、
正直手探りで使っていくしかないのが現状です。
だれかにまとめを作ってほしいのが正直な気持ちです...