我试图在python中确定某个应用程序是否已经打开,以便我不打开它两次。我做了一点研究,发现可以提取程序的进程名称,但我唯一的问题就是我检查的程序本身有一个非常通用的进程名称(在此case," pythonw.exe"或" cmd.exe")。
但它在Windows任务管理器的应用程序列表中有不同的名称,所以我的问题是,是否有任何方法可以使用它来检测程序是否打开。我的工作场所不允许我下载用于此脚本的其他程序或模块,因此答案需要使用os模块或类似于Windows库中已包含的内容。
答案 0 :(得分:5)
我使用以下代码检查某个程序是否正在运行:
import psutil #psutil - https://github.com/giampaolo/psutil
# Get a list of all running processes
list = psutil.pids()
# Go though list and check each processes executeable name for 'putty.exe'
for i in range(0, len(list)):
try:
p = psutil.Process(list[i])
if p.cmdline()[0].find("putty.exe") != -1:
# PuTTY found. Kill it
p.kill()
break;
except:
pass
PS:您可以使用Virtual ENV安装自己的模块,或者只选择其他安装路径!
答案 1 :(得分:1)
我认为Python标准模块无法完成您的要求。它需要一些第三方库,例如win32api
,win32pdhutil
,win32con
。
另一种方法是使用Windows命令tasklist
。使用Python作为bat包装器,并解析tasklist
的输出。
C:\Documents and Settings\Administrator>tasklist
Image Name PID Session Name Session# Mem Usage
========================= ====== ================ ======== ============
System Idle Process 0 Console 0 28 K
System 4 Console 0 236 K
smss.exe 812 Console 0 388 K
csrss.exe 860 Console 0 3,720 K
winlogon.exe 884 Console 0 4,148 K
services.exe 928 Console 0 3,356 K
lsass.exe 940 Console 0 5,904 K
vmacthlp.exe 1100 Console 0 2,348 K
...