pywinautoのApplicationオブジェクトでウィンドウ操作

pywinautoのApplicationオブジェクトでウィンドウ操作

ウィンドウを操作する方法には二つの方法があります。

Applicationオブジェクトを使用する

Desktopオブジェクトを使用する

用途に応じて、どちらを使用するか選択してください!
本記事では、Applicationオブジェクトでウィンドウを操作について説明します!
ウィンドウ操作の中の下記の5点について解説します。

           ・ウィンドウの取得
           ・サイズ変更
           ・位置変更
           ・一覧表示
           ・閉じる

それでは、説明に移ります。

 

Applicationオブジェクトでウィンドウ操作方法

Applicationオブジェクトで出来ることは以下の通りです。

  • アプリケーションの起動 
  • 既存のアプリケーションに接続 
  • ウィンドウの検索
  • ウィンドウの操作(クリック、入力、スクロールなど)
  • マウス・キーボードの自動操作

本セクションでは、アプリのウィンドウ操作に特化 して詳しく解説します!

 

ウィンドウを取得する新規アプリを起動してウィンドウを取得

ウィンドウのサイズ変更・位置変更・閉じるなどの操作は、
まず始めにウィンドウの取得をすることが必要です。

 

新規アプリを起動してウィンドウを取得

メモ帳を起動してウィンドウを取得

from pywinauto import Application

app = Application().start("notepad.exe")  # メモ帳を起動
window = app.window(title="無題 - メモ帳")  # ウィンドウを取得

 

既に起動しているアプリに接続

既存のウィンドウに接続して操作

app = Application().connect(title="無題 - メモ帳")  # 既存のメモ帳に接続
window = app.window(title="無題 - メモ帳")

 

ウィンドウのサイズ変更

サイズを取得

ウィンドウの現在のサイズを取得するには、rectangle() メソッドを使用します。

from pywinauto import Application

app = Application().start("notepad.exe")  # メモ帳を起動
window = app.window(title="無題 - メモ帳")  # ウィンドウを取得

# ウィンドウのサイズを取得
rect = window.rectangle()
print(f"ウィンドウの位置とサイズ: {rect}")

 

サイズを変更

ウィンドウのサイズを変更するには、move_window() メソッドを使用します。

window.move_window(x=100, y=100, width=800, height=600)

📌 実行結果

  • x=100, y=100 → ウィンドウの左上の座標を (100, 100) に移動
  • width=800, height=600 → ウィンドウの幅を800px、高さを600pxに変更

 

最大化・最小化

ウィンドウのサイズを変更する前に、最大化や最小化の操作を行うことも可能です。

window.maximize()  # ウィンドウを最大化
window.minimize()  # ウィンドウを最小化
window.restore()   # 元のサイズに戻す

 

ウィンドウの位置変更

現在の位置を取得

ウィンドウの現在の位置(座標)を取得するには、rectangle() メソッドを使用します。

from pywinauto import Application

app = Application().start("notepad.exe")  # メモ帳を起動
window = app.window(title="無題 - メモ帳")  # ウィンドウを取得

# ウィンドウの現在の位置を取得
rect = window.rectangle()
print(f"ウィンドウの位置: (X: {rect.left}, Y: {rect.top})")

📌 実行結果

ウィンドウの位置: (X: 200, Y: 150)

RECT オブジェクトには (left, top, right, bottom) の座標情報が格納されており、
現在のウィンドウの位置を確認できます。

 

位置を変更

ウィンドウの位置を変更するには、move_window() メソッドを使用します。

window.move_window(x=100, y=100)

📌 実行結果

  • x=100, y=100 → ウィンドウの左上の座標を (100, 100) に移動

 

ウィンドウの一覧表示

特定のアプリケーションのウィンドウを一覧表示

特定のアプリケーション(例:メモ帳)のすべてのウィンドウを取得するには、Application オブジェクトの windows() メソッドを使用します。

from pywinauto import Application

app = Application().connect(title_re=".*メモ帳.*")  # メモ帳に接続
for window in app.windows():
    print(window.window_text())  # メモ帳内のウィンドウを表示

📌 実行結果

無題 - メモ帳
検索
置換

このコードを使えば、特定のアプリケーション内のウィンドウ(ダイアログなどを含む)を取得できます。

 

ウィンドウ内のコントロール一覧を表示

特定のウィンドウ内のボタンやテキストボックスなどのコントロールを確認するには、print_control_identifiers() メソッドを使用します。

from pywinauto import Application

app = Application().connect(title="無題 - メモ帳")  # メモ帳に接続
window = app.window(title="無題 - メモ帳")
window.print_control_identifiers()  # ウィンドウ内の要素を表示

📌 実行結果

Control Identifiers:
    Edit - 'Text Editor'    (L0, T0, R100, B20)
    Button - 'OK'           (L10, T30, R60, B50)

 

ウィンドウを閉じる方法

基本的なウィンドウの閉じ方

ウィンドウを閉じるには、close() メソッドを使用します。

from pywinauto import Application

app = Application().start("notepad.exe")  # メモ帳を起動
window = app.window(title="無題 - メモ帳")  # ウィンドウを取得

# ウィンドウを閉じる
window.close()

📌 実行結果

  • メモ帳を起動し、ウィンドウを取得する
  • close() を実行すると、メモ帳のウィンドウが閉じられる

 

すべてのウィンドウを閉じる

特定のアプリケーションのすべてのウィンドウを閉じる場合は、ループ処理を使います。

from pywinauto import Application

app = Application().connect(title_re=".*メモ帳.*")  # メモ帳のすべてのウィンドウを取得
for window in app.windows():
    window.close()  # すべてのウィンドウを閉じる

📌 実行結果

  • アプリケーション内のすべてのウィンドウを取得
  • close() をループで実行し、すべてのウィンドウを閉じる

 

まとめ

本記事では、
Applicationオブジェクトを用いたウィンドウ操作について
以下の5点を解説しました。

          ・ウィンドウの取得
          ・サイズ変更
          ・位置変更
          ・一覧表示
          ・閉じる

日々の業務において、私を含め多くの方が頻繁にアプリを操作していることでしょう。
その中の一つでも自動化できれば、わずかな時短の積み重ねが、やがて大きな差となります。
ぜひ今回の内容を活用し、業務の効率化を進めてみてください!

ここまで読んでいただきありがとうございました。
関連記事もぜひ読んでみてください!

 

関連ページ

RPA--PYWINAUTO
「RPA--PYWINAUTO」の記事一覧です。

公式ドキュメント

pywinauto.application module — pywinauto 0.6.8 documentation

コメント

タイトルとURLをコピーしました