python

しょっちゅう忘れることを書いておく。

66

214 views

起動中のアプリケーションの一覧を取得する方法

pyautoguiで起動中のアプリケーションの一覧を取得する方法について説明します。

1. デスクトップ上のすべてのウィンドウを取得する

次のコードで、デスクトップ上で起動しているすべてのウィンドウを取得し、そのタイトルを一覧表示します。バックエンドは「uia」を使用します。

from pywinauto import Desktop

# デスクトップ上のすべてのウィンドウを取得
windows = Desktop(backend="uia").windows()
for window in windows:
    print(window.window_text())  # 各ウィンドウのタイトルを表示

2. 特定のファイルダイアログを操作する

ファイルの「開く」ダイアログが表示されている場合、そのコントロール構造を表示して操作することが可能です。

# 「開く」ダイアログを取得し、コントロール構造を表示
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/

ツイッター

@darkimpact0626