如何使用Python在Windows 10系统中结束正在运行的任务?
实现Windows 10任务终止的Python方案说明
结论先行
完全可以通过Python实现Windows 10下终止运行中任务的需求,可完全模拟任务管理器的「结束任务」操作,Windows有对应的原生API可供直接调用。
常用实现方式
方式1:调用系统内置taskkill命令(最简单)
不需要额外安装第三方库,直接用Python标准库subprocess调用系统自带的taskkill工具即可,逻辑和任务管理器的默认结束任务逻辑一致。
import subprocess # 示例:结束所有记事本进程,对应任务管理器点结束任务的普通逻辑 subprocess.run(["taskkill", "/im", "notepad.exe"], check=True) # 如果遇到无响应进程需要强制终止,加/f参数 # subprocess.run(["taskkill", "/f", "/im", "notepad.exe"], check=True) # 如果要根据进程PID终止,把/im换成/pid + PID号即可 # subprocess.run(["taskkill", "/pid", "1234"], check=True)
参数说明:
/im:指定进程镜像名(即程序的exe文件名)/f:强制终止进程,不会给进程预留保存数据的时间/t:同时终止指定进程和其启动的所有子进程
方式2:直接调用Windows原生API(等效任务管理器底层逻辑)
任务管理器的「结束任务」功能底层调用的是Windows Kernel32库的TerminateProcessAPI,Python可以通过pywin32库直接调用该API,实现完全一致的效果。
首先安装依赖:pip install pywin32
强制终止进程(对应无响应程序的强行结束)
import win32api import win32con import win32process def terminate_process(pid: int): # 打开进程获取句柄,申请终止权限 handle = win32api.OpenProcess(win32con.PROCESS_TERMINATE, False, pid) # 调用终止API,退出码设为0 win32process.TerminateProcess(handle, 0) # 关闭进程句柄释放资源 win32api.CloseHandle(handle) # 示例:终止PID为1234的进程 terminate_process(1234)
温和请求关闭(对应点击窗口右上角叉号的效果)
如果要模拟任务管理器针对正常前台程序的优先逻辑(先尝试正常关闭,失败再强制杀),可以先发WM_CLOSE消息给程序窗口,程序会触发保存数据的提示逻辑:
import win32gui import win32con def close_window_by_title(window_title: str): # 根据窗口标题查找窗口句柄 handle = win32gui.FindWindow(None, window_title) if handle: # 发送关闭消息 win32gui.SendMessage(handle, win32con.WM_CLOSE, 0, 0) # 示例:关闭标题为「无标题 - 记事本」的窗口 close_window_by_title("无标题 - 记事本")
注意事项
- 终止系统进程、管理员权限运行的进程时,Python脚本需要以管理员身份启动,否则会触发权限不足报错
- 终止进程前建议先确认进程名/PID的准确性,避免误杀正常运行的其他程序
WM_CLOSE仅对带窗口的前台程序生效,后台无窗口进程需要用TerminateProcess或者taskkill终止
内容的提问来源于stack exchange,提问作者Shadowhunter 1
相关产品推荐
相关产品推荐

