栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 进程killer

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 进程killer

完整代码在我的主页资源中可以找到

(1)请在VS里面建立一个项目,然后在Form里放置一个按钮控件
(2)双击按钮控件,在合适的部分加入下面红色的代码
(3)拓展举例:进一步修改程序,给出一个列表显示正在运行的程序,让用户选择关闭哪个程序。

processKiller.py

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_ProcessKiller(object):
    def setupUi(self, ProcessKiller):
        ProcessKiller.setObjectName("ProcessKiller")
        ProcessKiller.resize(292, 724)
        self.centralwidget = QtWidgets.QWidget(ProcessKiller)
        self.centralwidget.setObjectName("centralwidget")
        self.formLayout = QtWidgets.QFormLayout(self.centralwidget)
        self.formLayout.setObjectName("formLayout")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout()
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtWidgets.QLabel(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(20)
        self.label.setFont(font)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.display = QtWidgets.QTextBrowser(self.centralwidget)
        self.display.setObjectName("display")
        self.verticalLayout.addWidget(self.display)
        self.upd = QtWidgets.QPushButton(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(15)
        self.upd.setFont(font)
        self.upd.setObjectName("update")
        self.verticalLayout.addWidget(self.upd)
        self.verticalLayout_3.addLayout(self.verticalLayout)
        self.verticalLayout_2 = QtWidgets.QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(20)
        self.label_2.setFont(font)
        self.label_2.setObjectName("label_2")
        self.verticalLayout_2.addWidget(self.label_2)
        self.input = QtWidgets.QLineEdit(self.centralwidget)
        self.input.setObjectName("input")
        self.verticalLayout_2.addWidget(self.input)
        self.kill = QtWidgets.QPushButton(self.centralwidget)
        font = QtGui.QFont()
        font.setFamily("楷体")
        font.setPointSize(15)
        self.kill.setFont(font)
        self.kill.setObjectName("kill")
        self.verticalLayout_2.addWidget(self.kill)
        self.verticalLayout_3.addLayout(self.verticalLayout_2)
        self.formLayout.setLayout(0, QtWidgets.QFormLayout.LabelRole, self.verticalLayout_3)
        ProcessKiller.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(ProcessKiller)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 292, 26))
        self.menubar.setObjectName("menubar")
        ProcessKiller.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(ProcessKiller)
        self.statusbar.setObjectName("statusbar")
        ProcessKiller.setStatusBar(self.statusbar)

        self.retranslateUi(ProcessKiller)
        QtCore.QmetaObject.connectSlotsByName(ProcessKiller)

    def retranslateUi(self, ProcessKiller):
        _translate = QtCore.QCoreApplication.translate
        ProcessKiller.setWindowTitle(_translate("ProcessKiller", "ProcessKiller"))
        self.label.setText(_translate("ProcessKiller", "  Running Process"))
        self.upd.setText(_translate("ProcessKiller", "刷新一下"))
        self.label_2.setText(_translate("ProcessKiller", "  Chosen Process"))
        self.kill.setText(_translate("ProcessKiller", "杀死进程"))

kill_process.py

 import sys
from PyQt5 import QtGui, QtCore, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5 import QtWidgets
from processKiller import *
import psutil
import os,signal

class PK(QMainWindow, Ui_ProcessKiller):
    def __init__(self):
        """
        继承布局文件,实现进程控制的功能
        其中processList可以用来放正在运行的进程
        connecter为按钮监听器
        """
        super(PK, self).__init__()
        self.setupUi(self)
        self.processList={}
        self.connecter()
        self.show()

    def connecter(self):
        """
        进程更新按钮
        进程杀死按钮的监听
        """
        self.upd.clicked.connect(self._upd)
        self.kill.clicked.connect(self._kill)

    def _upd(self):
        """
        每次更新列表时先清空
        根据所给接口遍历并加入类的列表
        """
        self.display.clear()
        for proc in psutil.process_iter():
            temp="PID:"+str(proc.pid)+" Name:"+str(proc.name())
            self.display.append(temp)
            self.processList[proc.pid]=str(proc.name())

    def _kill(self):
        """
        给出pid号,即可据此调用api杀死指定进程
        """
        pid = int(self.input.text())
        print(pid)
        try:
            cmd = 'taskkill /F /IM '+self.processList[pid]
            os.system(cmd)
        except OSError:
            print('没有如此进程!!!')


def main():
    app = QApplication(sys.argv)
    w = PK()
    w.show()
    sys.exit(app.exec_())

main()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/701282.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号