PyAutoGuiでマウス操作を自動化してみた

#はじめに

私自身Qiitaは疎か記事を書くこと自体が初めてなので、至らぬ点もございますがご了承くださいmm
本記事ではPyAutoGUIを使った**マウス操作(カーソルの移動、クリックなど)の自動化**の方法を簡単に紹介します。
プログラミング初心者の方や、難しいことはせずとにかくマウス操作の自動化が出来ればいいという方の助けになればいいと思っています。

#目次

1.環境・必要なもの
2.PythonのDL・インストール
3.PyAutoGUIのインストール
4.コーディング・実行
5.マウス関連の関数紹介
6.ペイントツールで遊ぶ
7.まとめ

#1.環境・必要なもの

さっそく準備をしていきましょう。
**win10 64bit**環境で下記を使用して開発しています。

・**Python 3.9.0**(導入説明あり)
・**PyAutoGUI**(導入説明、使用方法説明あり)

#2.PythonのDL・インストール

まずはPythonをダウンロードします。

下記のPythonの公式サイトのリンクに飛び、Pythonをダウンロードしましょう。
※現時点での最新バージョンは3.10.0ですが、今回自分は3.9.0で実装したため同じ動作を再現したい場合は3.9.0が確実かと思います。

https://www.python.org

トップページから**Downloads->Windows**を選択しましょう。

![PythonHP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1761673/b8e56030-a03e-ed62-ac8e-255a91f3b3fa.png)

そこからPython3.9.0のインストーラーをダウンロードします。
・Download **Windows x86-64 executable installer** からインストーラーをDLしてください。

![Python3.9.0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1761673/89a3e27b-6b6c-3f97-cb3e-70a3298353a9.png)

ダウンロード出来たらexeを起動しましょう。
**Install Now**をクリックで、Pythonのインストールが始まります。(画像は32bitですが正しくは64bitです)

![Python3.9.0Setup.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1761673/716b3348-7f38-2a45-daec-91dfd1950a77.png)

インストールが完了するとSetup was successfulと表示されます。

![Python3.9.0SetupFin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1761673/3fe71b6e-4fa0-0086-e7c0-2d46f4dc61d0.png)

これでPythonの準備はOKです。

#3.PyAutoGUIのインストール

次にPyAutoGUIをインストールします。

スタートメニューを開き、「cmd」と入力します。
![cmd.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1761673/2b634d71-6b12-5585-5d2f-048c7f80d66e.png)

すると「コマンドプロンプト」というアプリが検索に引っかかると思うので、起動してください。
![cmd2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1761673/0a984eac-bf3f-27b9-942e-c1c9b28fb05f.png)

起動したら、Pythonをインストールするコマンドを実行します。

```php:コピペ用
pip install pyautogui
```

インストールが完了したらコマンドプロンプトは閉じてしまって構いません。

#4.コーディング・実行

さて、いよいよ本題です。
先ほどと同じ要領で、Pythonを起動しましょう。

```php:コピペ用
python 3.9 (64-bit)
```
![python sarch.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1761673/79fed44a-b4a6-77a1-9721-738c5adc7da7.png)


起動するとコンソールが出てくると思います。
今回はこれを使ってコーディングしていきます。
![Python3.9 (64).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1761673/72b8338c-cd63-b600-60ac-00142e204581.png)



まず、PyAutoGUIを導入しましょう。

```php:コピペ用
import pyautogui
```

この段階では、PyAutoGUIを導入しただけなのでなにも起きないと思います。

そして次の行でいよいよマウスカーソルが動きます。

```php:マウスカーソルをディスプレイ左上(絶対座標)に移動させる
pyautogui.moveTo(1, 1)
```

これを入力すると...

**カーソルが動きました！！！！！**
プログラムが動く瞬間はコピペでもなんでも嬉しいですね。

![moveTo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1761673/692bdde0-c85a-5d3a-8601-b31cec2fa42e.gif)

この**moveTo**関数は、引数に
・目標地点の絶対座標(X)
・目標地点の絶対座標(Y)
・到達までにかかる時間
を持たせることが出来ます。

参考動画では3つめの「到達までにかかる時間」を指定していませんが、この場合実行した瞬間にカーソルが移動します。
指定したい場合はこのように書きます。

```php:マウスカーソルをディスプレイ左上に移動させる(時間指定あり)
pyautogui.moveTo(1, 1, 10)
```
10の部分を変えると速度が変更できます。

例としてまずは簡単なマウスの移動を実装しました。
ここからはメジャーなマウス関連の関数を紹介していきます。

#5.マウス関連の関数紹介

**・ボタン**

指定したスクリーン座標をクリック出来ます。

```php:指定した座標を左クリック
pyautogui.click(positionX,positionY)
```

```php:指定した座標を右クリック
pyautogui.rightClick(positionX,positionY)
```

```php:ボタンを押した状態にする
pyautogui.mouseDown()
```

```php:ボタンを離す
pyautogui.mouseUp()
```


**・移動**

マウスカーソルの移動が出来ます。

```php:マウスカーソルを指定した座標に移動させる
pyautogui.moveTo(positionX,positionY)
```

```php:マウスカーソルを現在値から指定した数だけ移動させる
pyautogui.moveRel(valueX,valueY)
```

#6.ペイントツールで遊ぶ

動作確認も兼ねて、マウス操作が可視化出来るペイントツールで遊んでいこうと思います。
先ほど紹介した関数を組み合わせて、正方形を描画してみます。

ペイントツールを全画面で起動し、同じコードを実行してみましょう。

```php:行う処理
#図形の四角を選択する
pyautogui.click(460,60,1)

#マウスを初期位置に移動
pyautogui.moveTo(300,200,1)

#左ボタンを長押し
pyautogui.mouseDown()

#マウスを今の位置から横に200、縦に200移動
pyautogui.moveRel(200,200,2)

#左ボタンを離す
pyautogui.mouseUp()
```

実行結果がこちら。

![DrawBox.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1761673/1876a2aa-908f-0e53-96e7-264f29e145ae.gif)

こんな感じです。
今更ですが、プログラムは上から下に向かって順番に実行されます。

#7.まとめ

以上がPyAutoGUIを使ったマウス操作の実装です。
最後まで読んでいただきありがとうございました！