PythonでChromeなどのWindowsアプリケーションの起動と終了を検知する方法

問題点

顧客からの質問で、PythonでChromeなどのWindowsアプリケーションの起動と終了を使用したいが、何か方法がないか。
また、ライブラリーなどを用いて実現できるのであれば、ライブラリーを知りたい。

ライブラリーに関して

PythonでWindowsアプリケーションの起動と終了を検知するためには、pywinautoというライブラリーを使用することができます。

pywinautoは、Windows上で実行されているアプリケーションを自動化するためのライブラリーで、起動されたWindowsアプリケーションを制御したり、UI上の操作をシミュレートしたりすることができます。

具体的には、pywinautoApplicationクラスを使用して、Windowsアプリケーションを起動し、そのプロセスIDを取得することができます。そして、psutilというライブラリーを使用して、特定のプロセスIDが存在するかどうかを監視し、アプリケーションの終了を検知することができます。

サンプルコード

以下は、pywinautopsutilを使用してChromeの起動と終了を検知する例です。

import time
import psutil
from pywinauto import Application

app = Application().start("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")
process_id = app.process

while True:
    time.sleep(1)
    if not psutil.pid_exists(process_id):
        print("Chrome has been closed.")
        break

この例では、Application().start()メソッドでChromeを起動し、app.process属性でプロセスIDを取得しています。そして、psutil.pid_exists()関数を使用して、プロセスIDが存在するかどうかを1秒ごとにチェックしています。もしプロセスIDが存在しなくなれば、Chromeが終了したとみなし、ループを終了しています。

また、この例ではChromeのパスを直接指定していますが、pywinautoApplicationクラスは、実行ファイル名やウィンドウタイトルなどを指定して、任意のWindowsアプリケーションを起動することができます。詳細は、pywinautoの公式ドキュメントを参照してください。

Program 関連の相談先・運営者情報

Program 関連の記事を読んだ方向けに、運営者情報と相談先を整理しています。連絡は X を基本窓口とし、内容確認後に対応可否をご案内します。

Xでご依頼・ご相談 ホームを見る

Windowsの不具合対処や更新情報は、確認できた範囲で随時整理しています。内容により個別対応できない場合があります。