PyAutoItをちょっとだけ触ってみた

業務でPyAutoItを使ってみたので、備忘録として記事にしておきます。

***

# PyAutoItとは
Python用のAutoItのラッパーで。WindwosのGUIを操作することができます[^ラッパーとは]
※似たようなものにPythonGUIというものがありますが、私は詳しくないです。
公式：https://pypi.org/project/PyAutoIt/

[^ラッパーとは]: ラッパー(Wrapper)とは、ざっくり言うと他のプログラムで動いていたものを、こっちのプログラムでも使えるようにしたもの。詳しく知りたい人はググってみてください。

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

公式：https://pypi.org/project/autoit/
とのことらしいです。

# PyAutoItを使うのに必要な環境情報

|#|名前|説明|
|:-:|:----:|:---:|
|1|Python3|PyAutoItはPythonで動くので当然必要になります|
|2|エディタツール|VSCode,pycharm,ATOM等お好きなもの|
|3|PyAutoIT|インストールしないと使えません|

##1. PyautoItのインストール
1. コマンドプロンプトを起動する
2. pip install pyautoit と入力する

```python:PyAutoItのインストール
$ pip install pyautoit
```

##2. AutoItのインストール
AutoItに入っている「Au3Info.exe[^2]」を使いたいので、本家のAutoItもインストールします。

[^2]: Au3Info.exeとは、操作対象のウインドウ情報を取得してくれる便利アプリです。RPAや自動化でとても重宝します。

1. AutoItの公式サイトの[Download](https://www.autoitscript.com/site/autoit/downloads/)から最新版をダウンロードします。v3.3.14.5(2020年7月時点）
2. ダウンロードしたSetup.exeを開き、インストールする
3. Next -> Agree -> 画面に沿ってインストール
4.C:\Program Files (x86)\AutoIt3　の中にAu3Info.exe　/ Au3Info_64.exeが入っていることを確認する
※インストール先を変更した場合は、変更先で確認してください。


参考したページ：http://auto-pc.neginukide.com/?p=27


# PyAutoItの使い方
PyAutoItはあくまでも自動化することしかできません。
その自動化する対象(GUI)の情報を取得するのには、Au3Info.exeを使用します。
※Au3Info.exe / Au3Info_64.exeの2種類存在しますが、自身のPCのbit数と同じものを使ってください。
　Au3Info.exe：32bit / Au3Info_64.exe：64bit

## PyAutoItで使える関数
基本的にAutoItと同じ関数が使えるそうです。
ただし、少しだけ使い方が異なるので注意してください。

例）ControlTreeView関数の場合
　AutoIt：ControlTreeView
PyAutoIt：Control_Tree_View　（autoit.Control_Tree_View(hoge,hogehoge,hogehogehoge）と使うそうです)


https://open-shelf.appspot.com/AutoIt3.3.6.1j/html/functions.htm


Au3Info.exeの使い方はこちらの記事を参考にしてください。
[■■■Au3Info.exeの利用方法■■■](https://cfautog.tokyo/2019/11/18/au3info-exe%E3%81%AF%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%E3%81%AE%E6%83%85%E5%A0%B1%E3%82%92%E8%A6%8B%E3%82%8C%E3%82%8B%E4%BE%BF%E5%88%A9%E3%81%AA%E3%82%A2%E3%83%97%E3%83%AA/)


## 操作例（Au3Info.exe）
1. Au3Info.exeを起動するとこのような画面が表示されます
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288745/65e31b1b-4dd0-a272-e93f-0de9ec3760a6.png)

2. 赤枠の部分をドラッグして、操作したいウインドウの場所までもっていきます
 <img width="862" alt="2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288745/51434cf2-a4eb-6a37-75fb-28aab487c440.png">

3. Controlタブを選択すると、ドラッグした箇所のウィンドウ情報を取得することができます。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288745/6e8b53fb-0582-994d-edd9-b6ea89687912.png)

取得したウィンドウ情報をもとにコードを書いてみます

## サンプルコード
ここでは、メモ帳に"Hello World!"と入力するサンプルコードを記述します。

```title:PyAutoItサンプルコード(Python)
import autoit

autoit.run("notepad.exe")
autoit.win_wait_active("[CLASS:Notepad]", 3)
autoit.control_send("[CLASS:Notepad]", "Edit1", "hello world{!}")
autoit.win_close("[CLASS:Notepad]")
autoit.control_click("[Class:#32770]", "Button2")
```

## 実際に動かしてみた（デモ動画）
**操作の内容**
1. メモ帳を開く
2. "Hello World!"と入力する
3. 保存せずにメモ帳を閉じる

![sample.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/288745/14697675-2f79-aa7b-da62-ea0a1c050206.gif)


# AutoItの使い方
このページはPyAutoItのことをメインにしているので、
もし本家のAutoItに興味のある方は、下記の記事を読んでみてください。
https://cfautog.tokyo/2020/02/27/autoit-howtouse/