所以我有简单的程序 我用 Python tkinter 制作的
它会打开一个cmd窗口并执行
sfc /scannow
我想弄清楚的是,如果我点击右上角的 X 我得到了^C。
如何防止这种情况发生?如何正确关闭窗户?
我尝试将其放入带有键盘中断的 try 块中,但这似乎不起作用
我尝试了几种不同的方法来使用kill,但我不清楚它应该如何工作
def sfc_scannow():
# sfc / scannow
if not pyuac.isUserAdmin():
statusbar.set('Access is denied, you are not an admin')
root.after(5000, lambda: statusbar.set(''))
# print('okM') # for testing
else:
sfc_scannow_data()
def sfc_scannow_data():
subprocess.Popen("start /wait sfc /scannow", shell=True)
我尝试将其放入带有键盘中断的 try 块中,但这似乎不起作用
您可以使用子进程按名称终止任务:
subprocess.Popen('taskill /f /t /im ' + name_to_kill)
或者通过 processID 使用:
subprocess.Popen(subprocess.Popen('taskkill /f /t /PID ' + str(process.pid))
/pid ProcessID :指定要终止的进程的进程ID。
/im ImageName :指定要终止的进程的映像名称。使用通配符 (*) 指定所有图像名称。
/f :指定强制终止进程。对于远程进程,该参数被忽略;所有远程进程都被强制终止。
/t :指定终止所有子进程以及父进程,通常称为树终止
您可以使用 psutil
获取进程 IDfor process in psutil.process_iter():
if process.name() == 'paint.exe':
subprocess.Popen('taskkill /f /t /PID ' + str(process.pid))