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の公式ドキュメントを参照してください。

問題が解決したら、お友達と共有しませんか?

この記事にいっぱいおごってみる?

KOBE WINGのAmazonほしい物リスト

オススメ記事

PythonPython

Posted by KobeWing