【Python】ウィンドウをアプリ名指定しアクティブ切り替えする簡単な方法

最近pythonをさわり始めました。

pythonで業務の自動化をしてみようとチャレンジしていますが、まずは簡単なキーボードやマウス操作を自動操作するようなものを作っていますが、ウィンドウのアクティブどうやるの?と気になりました。これが結構行き詰りましたが、答えがわかれば簡単。

今後のためにメモ残していきます。

1.ライブラリ「pywin32」をインストール(未導入時のみ)

事前に「pywin32」のライブラリがインストールされていることが前提です。

pip install pywin32

でインストールしておきましょう。
(win32guiはimportするがインストールはwin32guiではなくpywin32です)

私の試したpython環境は3.9の64bit版。win32guiのライブラリをpipでダウンロードしようとするとエラーが出てインストールできなかったです。いろいろ調べると最近のバージョンではwin32guiはインストールできない模様。
でもpywin32が入っていればwin32gui等のモジュールは含まれているらしく、普通にソースコードに import win32gui とかけばOKみたいです

サンプルソースコード紹介(開いているウィンドウをアプリ名を指定しアクティブ状態にする処理)

import pyautogui
import time
import win32gui
memoapp = win32gui.FindWindow(None,'無題 - メモ帳')
time.sleep(1)
win32gui.SetForegroundWindow(memoapp)

短めのコードでかきました。実際はwin32guiがかいてる3行だけで動きます。

time.sleepもなくても大丈夫かもしれませんが実際の運用ではあった方がいいと思うので一応入れました。
また実用的にはキーボード自動操作を行いながらアクティブ変更などを行うので
1行目に import pyautogui もかいちゃってます。

'無題 - メモ帳'はアプリのタイトルバーに表記されている名称だと思っていただければOKです。
タイトルバーやタスクバーやタスクマネージャーのプロセスの表記をみたらわかります。

 

今回の記事は以上です。

コメント