Inside Task Manager [Windows 8+],在“进程”选项卡中列出了当前正在运行的所有进程。如果我们打开2个MS Word窗口,它只会出现一次,但这实际上是一个组,可以扩展为能够分别查看和结束这两个任务。
这很好,但它不会延续到“详细信息”选项卡,其中列出了WINWORD.EXE但只出现了一次!因此只有1个PID!共享PID是一个问题,因为尝试关闭它会导致整个事情关闭。
我想只杀死一个特定的单词窗口,而不是当我尝试以编程方式杀死windows时发生的所有单词窗口(目前我在python中通过taskkill
使用import os
没有额外模块的其他方式也可以。)
现在,当我运行taskkill.... "WordDoc.docx"
时,它会杀死每个打开的单词文档,这些文档非常烦人且可能会丢失数据。有没有办法能够杀死“proccesses”,就像在任务管理器中完成它一样?
谢谢
PS我没有使用/ T因此不是问题
答案 0 :(得分:1)
在 Process 选项卡上关闭进程的单个窗口时,任务管理器不会终止该窗口所属的进程,而只是向该窗口发送WM_CLOSE
消息。您会注意到Word窗口未被“杀死”,因为您仍会收到Word文档中保存和未保存更改的提示。
您可以使用以下代码执行相同的任务管理器,该代码枚举所有顶级窗口,然后在窗口标题与所需值匹配时发送WM_CLOSE:
import win32gui
def enumHandler(hwnd, lParam):
if win32gui.IsWindowVisible(hwnd):
if 'My Word Document' in win32gui.GetWindowText(hwnd):
win32gui.PostMessage(hwnd, win32con.WM_CLOSE, 0, 0)
win32gui.EnumWindows(enumHandler, None)