Используя python, я должен уметь обнаруживать, когда пользователь закрыл окно проводника Windows. Сначала я попробовал PID, прежде чем понял, что все это связано с центральным процессом «explorer.exe» :(classic noobish me (это означало, что PID не был изменен вообще после его закрытия). Поэтому мой вопрос: как бы я мог обнаружить, когда окна оконника окон были закрыты. Спасибо :)Как определить, когда окно проводника Windows было закрыто?
Вот мой текущий код (он определенно работает, но он не может обнаружить, когда он закрывается, поскольку explorer.exe также запускает панель задач и т.д.):
import psutil
import re
def check4pid(PROCNAME):
for proc in psutil.process_iter():
if proc.name() == PROCNAME:
PIDX=re.search('pid=(.*?), name',str(proc)).group(1)
#print proc
print PIDX
if psutil.pid_exists(int(PIDX)):
print "a process with PID %d exists" % int(PIDX)
else:
print "a process with PID %d does not exist" % int(PIDX)
check4pid ("explorer.exe")
Возможные дубликатом [запущенных процессов списка на 64-битной Windows] (http://stackoverflow.com/questions/1632234/list-running-processes-on-64 -битные окна) – Torxed
Не знаете, сколько поддержки COM вы получаете от Python, но это то, как вы это сделаете (без грубого форсирования, как это предлагает @Torxed): [Большая небольшая программа: мониторинг окон Internet Explorer и Explorer , часть 3: Отслеживание создания и уничтожения] (https://blogs.msdn.microsoft.com/oldnewthing/20130614-00/?p=4083/). – IInspectable
@Ilnspectable Я никогда не предлагал грубую силу, которая является стандартным средством коммуникации в окнах, так же как DBUS является стандартным протоколом/инструментом обмена сообщениями в Linux (да, я знаю, это плохое сравнение). Использование модуля wmi в python более элегантно, чем любой фрагмент или код C, который вы только что связали? – Torxed