しょっちゅう忘れることを書いておく。
69 |
425 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/