在应用中,有时会在启动的时要去检查看一下当前应用程序是否打开过,你就要看进程是否存在:
import win32com.client
def CheckProcExistByPN(process_name):
try:
WMI = win32com.client.GetObject('winmgmts:')
processCodeCov = WMI.ExecQuery('select * from Win32_Process where Name="%s"' % process_name)
if len(processCodeCov) > 2:
print(process_name + " exist.{}.".format(len(processCodeCov)))
return True
except Exception as e:
print(process_name + "error : ", e)
return False
此处有个要注意的地方,就是len(processCodeCov) > 2;经测试发现采用Python37(32)+PyQt5使用PyInstaller打包的程序,在执行时在windows任务栏中会出现两个一样的进程名;
如下图所示:
所以此处要使用大于2,如何阻止这样显示两个进程呢,那要使用到如下所示:
from multiprocessing import freeze_support
freeze_support()
经测试发现无效,囧囧囧囧... ...