2017-01-02 2 views
2

Внутри диспетчера задач [Windows 8+] на вкладке «Процессы» перечислены все процессы, выполняемые в настоящий момент. Если мы откроем 2 окна MS Word, оно появится только один раз, однако это фактически группа и может быть расширена, чтобы иметь возможность видеть и заканчивать обе задачи отдельно.Killing Like Task Manager

Это замечательно, однако оно НЕ переносится на вкладку «Подробности», где указан WINWORD.EXE, но только в 1 случае! И, таким образом, только 1 PID! Совместное использование PID является проблемой, потому что попытка закрыть его приводит к закрытию всего объекта.

Я хочу только убить конкретное окно слова, не все слова окно, которое происходило при попытке убить окна программно (в настоящее время я использую taskkill через import os в питоне, любой другой способ сделать это без дополнительного модули были бы в порядке).

Прямо сейчас, когда я запускаю taskkill.... "WordDoc.docx", он убивает каждый документ открытого слова, который крайне раздражает и может привести к потере данных. Есть ли способ убить «proccesses», например, как это делается в диспетчере задач?

Спасибо

PS Я не использую/T, так что это не проблема

ответ

1

При закрытии одного окна процесса на вкладке Process, Task Manager не убивает процесс в окно принадлежит, но просто отправляет сообщение 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)  
+0

в любом случае использовать, как правило, предварительно загруженные модули вместо этого? (я ценю ваш ответ, но было бы лучше, если бы я мог использовать что-то, что установлено с помощью python, даже если это зависит от ОС как os.ETC(). Спасибо за ваше время –

+0

pst вам также следует импортировать win32con, вызывать ur код не работает;), но мне все равно понравилось бы собственное решение, просто для других :) –

Смежные вопросы