怎样启用python_python检查软件是否启动,未启动则开启

import threading

import os

import subprocess

from configparser import ConfigParser

class TaskCheck:

def __init__(self, task):

self.task = task

self.task_name = os.path.basename(task)

def processCount(self):

p = os.popen('tasklist /FI "IMAGENAME eq %s"' % self.task_name)

return p.read().count(self.task_name)

def timerStart(self):

t = threading.Timer(10, self.watch_exe)

t.start()

def watch_exe(self):

if self.processCount() 

print("未启动:%s" % self.task_name)

print(self.task)

print(subprocess.Popen(["cmd/c", "start", " ",self.task],shell=True))

else:

print("%s is running" % self.task_name)

task.timerStart()

if __name__ == "__main__":

cf = ConfigParser()

cf.read("./exe.ini", encoding="utf-8")

exe_file = cf.get("settings", "file")

# exe_file = r"D:\Program Files (x86)\test v1.0\test\test.exe"

task = TaskCheck(exe_file)

task.watch_exe()

########################################################################################

import time

import os

import subprocess

from configparser import ConfigParser

import re

class TaskCheck:

task_index = 0

def __init__(self, task):

self.task = task

self.task_name = os.path.basename(task)

# def processCount(self):

#     p = os.popen('tasklist /FI "IMAGENAME eq %s"' % self.task_name)

#     return p.read().count(self.task_name)

def timerStart(self):

while True:

if self.task_index > 10:

os.system("cls")

self.task_index = 0

print("等待10秒后检查:%s" % self.task_name)

self.watch_exe()

time.sleep(10)

self.task_index += 1

def closeExe(self):

subprocess.Popen(["taskkill", "/f", "/im", self.task_name])

def killProcessID(self, id):

subprocess.Popen("taskkill /PID {0}".format(id))

def processIDs(self):

# cmd_str = "tasklist | findstr /i {0}".format(self.task_name)

cmd_str = 'tasklist /FI "IMAGENAME eq {0}"'.format( self.task_name)

p = subprocess.Popen(cmd_str, stdout=subprocess.PIPE, bufsize=1, shell=True)

info = ""

for line in iter(p.stdout.readline, b''):

info += line.decode('gbk', 'ignore')

p.stdout.close()

p.wait()

ids = []

for line in info.split("\n"):

try:

m = re.search("(\d+)\sConsole", line, re.I)

except Exception as e:

print("Error:%s" % str(e))

if m is not None:

ids.append(int(m[1]))

return ids

def watch_exe(self):

ids = self.processIDs()

total = len(ids)

if total 

print("未启动:%s" % self.task_name)

print(self.task)

print(subprocess.Popen(["cmd/c", "start", " ", self.task], shell=True))

else:

if total == 1:

print("%s is running" % self.task_name)

else:

print("开启的软件个数为:%d" % total)

# print("关闭软件,等待重启")

# self.closeExe()

ids.sort(reverse=True)

# 关闭第一个

self.killProcessID(ids[0])

if __name__ == "__main__":

cf = ConfigParser()

cf.read("./exe.ini", encoding="utf-8")

exe_file = cf.get("settings", "file")

# exe_file = r"D:\Program Files (x86)\test v1.0\test\test.exe"

task = TaskCheck(exe_file)

task.timerStart()

#task.processIDs()

########################################

# 本人经过多番测试,最终使用的

# 检查软件是否在运行 没有则 开启

import time

import os

import subprocess

from configparser import ConfigParser

import re

class TaskCheck:

task_index = 0

def __init__(self, task):

self.task = task

self.task_name = os.path.basename(task)

def processCount(self):

p = os.popen('tasklist /FI "IMAGENAME eq %s"' % self.task_name)

return p.read().count(self.task_name)

def timerStart(self):

while True:

if self.task_index > 10:

os.system("cls")

self.task_index = 0

print("等待10秒后检查:%s" % self.task_name)

self.watch_exe()

time.sleep(10)

self.task_index += 1

def closeExe(self):

subprocess.Popen(["taskkill", "/f", "/im", self.task_name])

def killProcessID(self, id):

subprocess.Popen("taskkill /PID {0}".format(id))

def processIDs(self):

# cmd_str = "tasklist | findstr /i {0}".format(self.task_name)

cmd_str = 'tasklist /FI "IMAGENAME eq {0}"'.format(self.task_name)

# print(cmd_str)

p = subprocess.Popen(cmd_str, stdout=subprocess.PIPE, bufsize=1, shell=True)

info = ""

for line in iter(p.stdout.readline, b''):

info += line.decode('gbk', 'ignore')

p.stdout.close()

p.wait()

ids = []

# print(info)

for line in info.split("\n"):

try:

m = re.search("(\d+)\sConsole", line, re.I)

except Exception as e:

print("Error:%s" % str(e))

if m is not None:

ids.append(int(m[1]))

# print(ids)

return ids

def watch_exe(self):

total = self.processCount()

if total 

self.closeExe()

print("5秒后启动")

time.sleep(5)

print("未启动:%s" % self.task_name)

print(self.task)

print(subprocess.Popen(["cmd/c", "start", " ", self.task], shell=True))

else:

# if total > 1:

#     print("开启的软件个数为:%d" % total)

#     # self.closeExe()

#     ids.sort(reverse=True)

#     # 关闭第一个

#     print("关闭软件")

#     self.killProcessID(ids[0])

# else:

print("%s is running" % self.task_name)

if __name__ == "__main__":

cf = ConfigParser()

cf.read("./exe.ini", encoding="utf-8")

exe_file = cf.get("settings", "file")

# exe_file = r"D:\Program Files (x86)\test v1.0\test\test.exe"

task = TaskCheck(exe_file)

task.timerStart()

# task.processIDs()

# input("enter test..")

如果本文对您有所帮助,请支持下本站哦!!!^_^

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值