像任务管理器一样杀人

时间:2017-01-02 13:50:00

标签: python ms-word pid

Inside Task Manager [Windows 8+],在“进程”选项卡中列出了当前正在运行的所有进程。如果我们打开2个MS Word窗口,它只会出现一次,但这实际上是一个组,可以扩展为能够分别查看和结束这两个任务。

这很好,但它不会延续到“详细信息”选项卡,其中列出了WINWORD.EXE但只出现了一次!因此只有1个PID!共享PID是一个问题,因为尝试关闭它会导致整个事情关闭。

我想只杀死一个特定的单词窗口,而不是当我尝试以编程方式杀死windows时发生的所有单词窗口(目前我在python中通过taskkill使用import os没有额外模块的其他方式也可以。)

现在,当我运行taskkill.... "WordDoc.docx"时,它会杀死每个打开的单词文档,这些文档非常烦人且可能会丢失数据。有没有办法能够杀死“proccesses”,就像在任务管理器中完成它一样?

谢谢

PS我没有使用/ T因此不是问题

1 个答案:

答案 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)     
相关问题