しょっちゅう忘れることを書いておく。
![]() |
66 |
213 views
pyautoguiで起動中のアプリケーションの一覧を取得する方法について説明します。
次のコードで、デスクトップ上で起動しているすべてのウィンドウを取得し、そのタイトルを一覧表示します。バックエンドは「uia
」を使用します。
from pywinauto import Desktop
# デスクトップ上のすべてのウィンドウを取得
windows = Desktop(backend="uia").windows()
for window in windows:
print(window.window_text()) # 各ウィンドウのタイトルを表示
ファイルの「開く」ダイアログが表示されている場合、そのコントロール構造を表示して操作することが可能です。
# 「開く」ダイアログを取得し、コントロール構造を表示
file_dialog = Desktop(backend="uia").window(title_re="開く")
file_dialog.print_control_identifiers()
例えば、Excelのようなアプリケーションでボタンの一覧を取得したい場合、以下のようにcontrol_type
を「Button」に指定して取得できます。
excel = app.window(title_re='.*Excel')
for ctrl in excel.descendants(control_type="Button"):
print(ctrl.window_text()) # 各ボタンのタイトルを表示
特定のウィンドウがuia
バックエンドで認識されない場合は、win32
バックエンドに切り替えて再試行してください。win32
は古いダイアログやuia
非対応のアプリケーションに強みがあるため、Excel
のファイルダイアログなどが認識されやすくなります。
from pywinauto import Application
# Excelアプリケーションに「win32」バックエンドで接続
app = Application(backend="win32").connect(title_re=".*Excel")
app_dialog = app.window(title_re="開く")
app_dialog.print_control_identifiers() # コントロールの構造を表示
uia
は、最新のWindowsアプリケーションや標準的なUIに対して有効です。win32
は、uia
非対応の旧式アプリケーションやダイアログに適しています。状況に応じてバックエンドを切り替えることで、pywinauto
を使って多様なアプリケーションやウィンドウを操作できます。
Page 63 of 69.
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/