You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中按名称彻底关闭程序窗口(Minecraft客户端场景)

彻底关闭Minecraft控制台客户端窗口的解决方案

我明白你的困扰——用批处理启动的Minecraft控制台客户端,只杀掉MinecraftClient.exe后,窗口会变成普通命令提示符而不是彻底关闭,这是因为批处理是通过cmd.exe进程托管运行客户端的,你只终止了子进程,父进程cmd.exe还在存活。要实现和点击窗口右上角×一样的效果,需要把关联的父进程也一起终止,下面给你两种可行的方案:

方案1:通过窗口标题精准关闭(无需Python依赖)

首先,在启动客户端的批处理文件开头添加一行设置窗口标题的命令,方便后续匹配:

title Minecraft Console Client

然后在你的Python脚本里,用taskkill根据窗口标题杀死对应的cmd.exe进程(连带其子进程一起终止):

import os
os.system('taskkill /f /fi "WINDOWTITLE eq Minecraft Console Client"')

这个命令会强制关闭所有标题为Minecraft Console Client的窗口进程,效果和手动点×完全一致。

方案2:用psutil关联父子进程一起终止

如果需要更精准地控制(比如避免误杀其他同名窗口),可以用psutil找到MinecraftClient.exe的父进程(也就是启动它的cmd.exe),然后同时终止两者:

import psutil

def terminate_minecraft_client():
    for proc in psutil.process_iter(['name', 'pid', 'ppid']):
        # 找到目标客户端进程(忽略大小写兼容不同环境)
        if proc.info['name'].lower() == 'minecraftclient.exe':
            try:
                # 先终止客户端子进程
                proc.kill()
                # 找到并终止父cmd进程
                parent_proc = psutil.Process(proc.info['ppid'])
                if parent_proc.name().lower() == 'cmd.exe':
                    parent_proc.kill()
                print("Minecraft客户端已彻底关闭")
            except (psutil.NoSuchProcess, psutil.AccessDenied):
                # 处理进程已结束或无权限的情况
                pass

terminate_minecraft_client()

为什么之前的方法无效?

你之前只终止了MinecraftClient.exe,但启动它的cmd.exe父进程还在运行,所以窗口会保留并变成普通命令提示符。而点击窗口×时,系统会终止整个cmd.exe进程,同时它的所有子进程(包括Minecraft客户端)也会被连带终止,这就是两种操作的本质区别。

内容的提问来源于stack exchange,提问作者RevealYourPuss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:33:08