跳过正文
  1. Posts/

一键kill

· loading · loading ·
技巧 软件 taskkill
Ohdmire
作者
Ohdmire
Think much.
目录

一键结束进程
#

起因
#

我真的绷不住了,Alt+F4 不能够关闭程序,调个任务栏管理器半天不出来,出来了还无响应,我真的服了,只能强制重启。所以我打做个一键杀死进程的程序。

编写
#

思路
#

  1. 需要获取当前正在运行的程序
  • 获取当前窗口句柄需要使用到系统函数,通过窗口得到进程pid,所以必须使用win32
  1. 需要能够调用taskkill指令
  • Python中内置的os.system()代码就能够很好的执行,但是需要提升至管理员身份
  1. 加上按键监听
  • 这个部分在我之前的博客 超级粘贴也有使用到,就是pynput

代码
#

import win32gui
import win32process
import psutil
import os
from pynput.keyboard import Listener,Key
import ctypes

# 排除列表
whitelist=["explorer.exe"]

#判断是否有管理员权限
def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

#监听
def on_release(key):
    if key == Key.esc:      # 停止监听
        return False
    if key == Key.f2:       # 这里是按f2调用kill函数
        kill()

#杀死进程
def kill():
    # 方案1 指哪打哪
    # point =win32gui.GetCursorPos()
    # now_point=win32gui.WindowFromPoint(point)
    # now_process = win32process.GetWindowThreadProcessId(now_point)[1]

    #方案2 获取当前激活的窗口
    now_win = win32gui.GetForegroundWindow()
    now_process = win32process.GetWindowThreadProcessId(now_win)[1]

    tprocess=psutil.Process(pid=now_process)
    if whitelist.count(tprocess.name())==0:    ##判断是否白名单进程
        target = r'taskkill /pid {} /F /T'.format(now_process)
        os.system(target)

#开始判断管理员权限
if is_admin() == False:
    print("警告:当前非管理员身份运行,可能导致kill失败")

#开始监听
with Listener(
        on_release=on_release) as listener:
    listener.join()

我也会把exe文件发布在GitHub上

https://github.com/ohdmire/OnePressKill/releases/

Ohdmire/OnePressKill

能够一键结束进程

HTML
0
0

小趣事
#

我真tmsb,把文件名称命名为taskkill,结果执行os.system的时候就又调用了一遍该程序,结果我看半天以为是pyinstaller编译出错了,我真的是服了。

该问题已在v0.2得到修复

更新日志
#

  • v0.2修复了编译后致命bug
  • v0.3增加了白名单功能,默认explorer.exe为白名单程序。同时增加了psutil库获取进程名称
  • v0.4增加了指哪打哪的选择

使用教程
#

只要运行程序按下F2就能杀死当前窗口的程序,按ESC退出程序

你可能还需要以管理员身份运行该程序

如果你需要也可以自行更改按键,具体参考官方文档 https://pynput.readthedocs.io/en/latest/keyboard.html

最后
#

效果

效果

参考链接
#

python小工具–查看窗口程序进程

Python 获取Windows管理员权限

相关文章

超级粘贴
· loading · loading
技巧 软件 粘贴
视频字幕神器pyTranscriber
· loading · loading
技巧 软件 字幕
我网站使用的一些东西
· loading · loading
技巧 网站