
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点を解説しました。
・ウィンドウの取得
・サイズ変更
・位置変更
・一覧表示
・閉じる
日々の業務において、私を含め多くの方が頻繁にアプリを操作していることでしょう。
その中の一つでも自動化できれば、わずかな時短の積み重ねが、やがて大きな差となります。
ぜひ今回の内容を活用し、業務の効率化を進めてみてください!
ここまで読んでいただきありがとうございました。
関連記事もぜひ読んでみてください!
関連ページ

コメント