
UWSCの代わりにPythonの「PyAutoGUI」が使えることを知り、過去のコードを書き換えていると、ウィンドウの取得でつまづきました。
ウィンドウタイトルと完全一致なら「win32gui.FindWindow()」で取得できるものの、部分一致では取得できません。
部分一致で取得できる方法をまとめました。
使うライブラリは?
外部ライブラリ「PyGetWindow」を使うと、タイトルと部分一致でウィンドウを取得できます。
「PyAutoGUI」と同時にインストールされますが、上手くいかない時は個別にインストールしてみてください。
pip install PyGetWindow
外部ライブラリのインストール方法はこちら Pythonに関する投稿が増えると、「外部ライブラリをインストールして~」と書くことも増えてきます。 インストール方法をその都度書いていたものの、1つにまとめる事にしました。 手順は? ... 続きを見る
Pythonで外部ライブラリをインストールするには?【Windows】
コードの書き方は?
「.getWindowsWithTitle()」を使うと、引数に指定した文字列と部分一致するウィンドウをリスト形式で返してくれます。
import pygetwindow as gw# メモ帳のウィンドウを取得する。print(gw.getWindowsWithTitle('メモ帳'))# ⇒ [Win32Window(hWnd=〇〇)]
取得したウィンドウを操作するには?
「PyGetWindow」には、様々な操作コマンドが用意されています。
import pygetwindow as gw# メモ帳のウィンドウを取得する。memo_window = gw.getWindowsWithTitle('メモ帳')[0]# アクティブにするmemo_window.activate()# 最大化するmemo_window.maximize()# 最小化するmemo_window.minimize()# 最大化・最小化から戻すmemo_window.restore()# リサイズする(仮にx=300,y=400)memo_window.resizeTo(300, 400)# 現在位置から引数の数値分移動memo_window.move(10, 10)# ウィンドウを指定の位置に移動memo_window.moveTo(10, 20)# 最大サイズ化を判定するprint(memo_window.isMaximized)# 最小サイズ化を判定するprint(memo_window.isMinimized)# ウィンドウタイトルを取得するprint(memo_window.title)# ウィンドウサイズを取得するprint(memo_window.size)# ⇒ Size(width=300, height=400)# ウィンドウの幅を取得するprint(memo_window.width)# ⇒ 300# ウィンドウの高さを取得するprint(memo_window.height)# ⇒ 400# ウィンドウの上の位置を取得するprint(memo_window.top)# ⇒ 20# ウィンドウの下の位置を取得するprint(memo_window.bottom)# ⇒ 420# ウィンドウの左の位置を取得するprint(memo_window.left)# ⇒ 10# ウィンドウの右の位置を取得するprint(memo_window.right)# ⇒ 310# ウィンドウ左上の位置を取得するprint(memo_window.topleft)# ⇒ Point(x=10, y=20)# ウィンドウの右下の位置を取得するprint(memo_window.bottomright)# ⇒ Point(x=310, y=420)# ウィンドウを閉じるmemo_window.close()
公式ドキュメントへのリンク
詳細はこちらをご覧ください。
https://pypi.org/project/PyGetWindow/
OSがMacの場合は?
調べていると、「PyGetWindowでサポートしているのはMS Windowsのみ」と、いう記述を見つけました。
その場合は、外部ライブラリ「PyWinCtl」を使うと操作できるそうです。
まとめ
タイトルと部分一致でウィンドウを取得するには、外部ライブラリ「PyGetWindow」か「PyWinCtl」を使います。
これでウィンドウ取得の問題は解決できたので、さらにRPA化がはかどりそうです。
Pythonでパソコンを操作する【目次】