如何在 Python 中检查应用程序是否已打开?


正在执行的程序称为进程。进程可以是当前操作系统上运行的应用程序,也可以是与操作系统相关的应用程序。如果应用程序与操作系统相关,则它首先会创建一个进程来执行自身。

其他应用程序依赖于操作系统服务来执行。大多数应用程序都是 OS 服务以及维护操作系统、软件和硬件的后台应用程序。

在 Python 中,我们有多种方法可以检查应用程序是否已打开。让我们详细了解一下它们。

使用 psutil.process_iter() 函数

psutil 是 Python 中的一个模块,它为用户提供了一个接口来检索正在运行的进程的信息和系统利用率。它可用于主要的操 作系统,如 Linux、Windows、macOS、Solaris 和 AIX 等,以及 API 平台。

psutil 模块的 process_iter() 函数帮助我们检索有关正在运行的进程的信息,例如进程名称、进程 ID、CPU 使用率、内存使用率等。它还提供有关系统利用率的信息,如磁盘使用率、网络使用率等。

示例

在此示例中,我们试图找出名为“Chrome.exe”的进程当前是否正在我们的系统中运行。

import psutil
def check_if_process_running(process_name):
    for process in psutil.process_iter(['name']):
        if process.info['name'] == process_name:
            return True
    return False
check_if_process_running("Chrome.exe")

输出

False

示例

这是 psutil 模块的 process_iter() 函数的另一个示例,它提供了进程的详细信息。

import psutil
processes = psutil.process_iter()
for process in processes:
    print(f"Process name: {process.name()} | PID: {process.pid}")
cpu_percent = psutil.cpu_percent()
print(f"CPU usage: {cpu_percent}%")
memory_usage = psutil.virtual_memory()
print(f"Total memory: {memory_usage.total / 1024 / 1024:.2f} MB")
print(f"Available memory: {memory_usage.available / 1024 / 1024:.2f} MB")
print(f"Memory usage: {memory_usage.percent}%")

输出

以下是 process_iter() 的输出,它提供了有关应用程序的全部信息。

Process name: chrome.exe | PID: 15964
Process name: chrome.exe | PID: 16876
CPU usage: 10.6%
Total memory: 12152.65 MB
Available memory: 5849.83 MB
Memory usage: 51.9%

使用 subprocess 模块

subprocess 模块是检查应用程序是否正在运行或已停止的另一种方法。使用 subprocess 模块,我们可以从当前的 Python 程序启动一个新的应用程序。我们可以使用 check_output() 方法获取程序或命令的输出。

示例

在以下示例中,我们尝试使用 check_output() 函数验证应用程序是否已打开:

import subprocess
def is_process_running(process_name):
    cmd = 'tasklist /fi "imagename eq {}"'.format(process_name)
    output = subprocess.check_output(cmd, shell=True).decode()
    if process_name.lower() in output.lower():
        return True
    else:
        return False
is_process_running("chrome.exe")

输出

True

使用 wmi 模块

Windows Management Instrumentation (WMI) 是 Windows 操作系统中的一套工具,允许管理员管理远程和本地计算机。

在 Python 中,我们有 wmi 模块,它可以帮助我们检查应用程序是否正在运行。以下代码用于在 Python 环境中安装 wmi。

pip install wmi

示例

在此示例中,我们将应用程序名称作为输入参数传递给 wmi 模块的 WMI() 函数,以检索具有进程 ID 的应用程序的状态。

import wmi
f = wmi.WMI()
for process in f.Win32_Process():
    print(f"{process.ProcessId:>5} {process.Name}")

输出

以下是 wmi 模块的 WMI() 函数的输出。

0 System Idle Process
    4 System
  124 Registry
  524 smss.exe
  752 csrss.exe
  868 csrss.exe
  888 wininit.exe
  940 services.exe
  960 lsass.exe
  320 winlogon.exe
  980 svchost.exe
 1048 fontdrvhost.exe
 1056 fontdrvhost.exe
 1144 WUDFHost.exe
 1180 svchost.exe
 1268 svchost.exe
 1292 WUDFHost.exe
 1396 svchost.exe
 1404 svchost.exe
 1412 svchost.exe
 1528 svchost.exe
 1640 dwm.exe
 1660 svchost.exe

更新于: 2023年8月9日

5K+ 阅读量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.