Закрыть Python, когда Parent закрыт

У меня есть программа Python (PP), которая загружает другую программу (AP) через COM, получает свой дескриптор окна и устанавливает его в качестве родителя PP.

Это работает довольно хорошо, за исключением того, что я не могу контролировать, что у AP все еще есть кнопка [X], доступная в верхнем левом углу. Поскольку это довольно очевидное место для пользователя, чтобы закрыть его, когда они закончат работу с программой, я попробовал это, и он оставил PP в Диспетчере задач работающим, но не видимым без возможности убить его, кроме как через Диспетчер задач. Любые идеи о том, как справиться с этим? Я ожидаю, что это будет довольно распространенным, что пользователь закрывается таким образом.

Спасибо!

5.10.2009 18:28:55
2 ОТВЕТА
РЕШЕНИЕ

Как вы сказали, вы получаете дескриптор AP и передаете его PP, поэтому PP имеет этот дескриптор, поэтому, когда AP закрыт, PP может проверить, существует ли этот дескриптор окна, используя Windows API IsWindow или IsWindowVisible, в зависимости от ваших потребностей.

import win32gui
win32gui.IsWindow(handle)
win32gui.IsWindowVisible(handle)
0
7.10.2009 08:10:11
С помощью этого метода я смог определить, было ли окно открыто, без непосредственного запроса точки доступа. Я все еще должен убить приложение, но я думаю, что это будет самая легкая часть. Спасибо!
Fry 7.10.2009 16:56:35
Почему вам нужно убить приложение? какое приложение PP?
Anurag Uniyal 8.10.2009 03:38:33

Как ПП контролирует поток? Если он управляется событиями, он может получить соответствующие события после закрытия родительского окна или завершения этого процесса AP; в противном случае он может «опросить», чтобы проверить, все ли время вокруг окна или процесса.

1
5.10.2009 20:33:51
Сложно сказать; общение между ними - это улица с односторонним движением. PP сообщает AP, что делать, и запрашивает информацию обратно в соответствующее время, но AP - это графический интерфейс пользователя, поэтому опросы могут быть заблокированы через COM, поэтому я не уверен, что хочу делать это постоянно. В python, если родительский объект закрыт, должно ли это инициировать событие с дочерним элементом?
Fry 5.10.2009 23:29:56
Спасибо за совет, я опросил API вместо AP, и это, кажется, работает очень хорошо. Спасибо, что отправили меня по рабочему пути :)
Fry 7.10.2009 16:57:33