如何使用Python检查应用程序是否最近已被打开?

4

我想知道用户最近打开应用程序的时间,例如,如果打开了“notepad.exe”,则脚本应该能够检测到它最近被打开,而不必一遍又一遍地迭代所有进程。

def checkIfApplicationOpened():
    for proc in psutil.process_iter():
        try:
            pinfo = proc.as_dict(attrs=['name'])
            if(pinfo['name'] == 'notepad.exe'):
                return True
        except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
            return False
    return False    

while True:
    print(checkIfApplicationOpened())

目前,这是我的方法,但效率非常低。请问是否有更好的方法?谢谢提前。

1个回答

3

使用Pywinauto库怎么样?

像这样:

import pywinauto

pywinauto.timings.wait_until_passes(20, 0.5, lambda: pywinauto.findwindows.find_windows(best_match=u'notepad.exe')[0])

它能够正常工作!而且与我之前的方法相比,几乎不消耗任何CPU资源。非常感谢。 - Karan Jagtiani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接