如何按名称关闭 python 中的 window
How to close a window in python by name
我正在为朋友制作我的世界控制台客户端脚本
它打开基于 txt 文件的控制台客户端
我想出了如何 kill/terminate window 但是这部分并没有物理关闭 window 它只是将它设置为一个普通的命令提示符 window 因为它是使用批处理命令创建的
如何按名称完全关闭程序,就像按下应用程序右上角的 "x" 按钮一样。
os.system("taskkill /f /im MinecraftClient.exe")
//for proc in psutil.process_iter():
// if proc.name() == "MinecraftClient.exe":
// proc.terminate()
// reap_children()
这些都没有真正关闭 .exe,它只是将其更改为命令提示符 window。而且我不想再次通过 psutil.process_iter() 中的 for proc 运行 来关闭命令提示符 windows.
编辑 1:
如何打开 MinecraftClient.exe 请记住它是您从 github
下载的控制台客户端
def connect(file, directory, executeds):
with open(file) as file:
for line in file:
#stdout=PIPE, stderr=PIPE, stdin=PIPE,
lines = line.split(":")
login = lines[0]
password = lines[1]
IP = lines[2]
// CREATE_NEW_PROCESS_GROUP = 0x00000200
// DETACHED_PROCESS = 0x00000008
command = "MinecraftClient.exe {0} {1} {2}".format(login, password, IP)
executed = Popen("start cmd /K " + command, cwd=directory, shell=True)
out, err = executed.communicate()
executeds.append(executed.pid)
if executed.returncode == 0:
print("Connected {0} to {1} successfully".format(login, IP))
else:
print("Failed to connect {0} to {1}.".format(login, IP))
print("{0}".format(err))
time.sleep(3)
有些东西我没有使用,因为它们只是测试
我刚查了一下,找不到适合我的叫 MinecraftClient.exe 运行 的东西。 Minecraft 进程实际上称为 javaw.exe
- 尝试杀死它。如果这不是问题,我使用 subprocess 模块管理它:
import subprocess
subprocess.call("taskkill /f /im javaw.exe", shell=True)
shell=True
阻止它在您的屏幕上打开命令提示符。
编辑
您的屏幕截图显示它最终变成了 cmd.exe - 尝试杀死它?
好的,下载程序后我设法使用 subprocess.call('taskkill /f /im MinecraftClient.exe & taskkill /f /im cmd.exe', shell=True)
成功杀死了它
我正在为朋友制作我的世界控制台客户端脚本 它打开基于 txt 文件的控制台客户端
我想出了如何 kill/terminate window 但是这部分并没有物理关闭 window 它只是将它设置为一个普通的命令提示符 window 因为它是使用批处理命令创建的
如何按名称完全关闭程序,就像按下应用程序右上角的 "x" 按钮一样。
os.system("taskkill /f /im MinecraftClient.exe")
//for proc in psutil.process_iter():
// if proc.name() == "MinecraftClient.exe":
// proc.terminate()
// reap_children()
这些都没有真正关闭 .exe,它只是将其更改为命令提示符 window。而且我不想再次通过 psutil.process_iter() 中的 for proc 运行 来关闭命令提示符 windows.
编辑 1:
如何打开 MinecraftClient.exe 请记住它是您从 github
下载的控制台客户端def connect(file, directory, executeds):
with open(file) as file:
for line in file:
#stdout=PIPE, stderr=PIPE, stdin=PIPE,
lines = line.split(":")
login = lines[0]
password = lines[1]
IP = lines[2]
// CREATE_NEW_PROCESS_GROUP = 0x00000200
// DETACHED_PROCESS = 0x00000008
command = "MinecraftClient.exe {0} {1} {2}".format(login, password, IP)
executed = Popen("start cmd /K " + command, cwd=directory, shell=True)
out, err = executed.communicate()
executeds.append(executed.pid)
if executed.returncode == 0:
print("Connected {0} to {1} successfully".format(login, IP))
else:
print("Failed to connect {0} to {1}.".format(login, IP))
print("{0}".format(err))
time.sleep(3)
有些东西我没有使用,因为它们只是测试
我刚查了一下,找不到适合我的叫 MinecraftClient.exe 运行 的东西。 Minecraft 进程实际上称为 javaw.exe
- 尝试杀死它。如果这不是问题,我使用 subprocess 模块管理它:
import subprocess
subprocess.call("taskkill /f /im javaw.exe", shell=True)
shell=True
阻止它在您的屏幕上打开命令提示符。
编辑
您的屏幕截图显示它最终变成了 cmd.exe - 尝试杀死它?
好的,下载程序后我设法使用 subprocess.call('taskkill /f /im MinecraftClient.exe & taskkill /f /im cmd.exe', shell=True)