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()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值