2009-10-05 7 views
0

J'ai un programme Python (PP) qui charge un autre programme (AP) via COM, obtient son handle de fenêtre et le définit comme le parent PP.Fermer Python lorsque Parent est fermé

Cela fonctionne assez bien, sauf que je ne peux pas contrôler que AP a toujours leur bouton [X] disponible dans le coin supérieur gauche. Puisque c'est un endroit assez évident pour l'utilisateur de fermer quand ils ont fini avec le programme, j'ai essayé ceci et il a laissé le PP dans le Gestionnaire des tâches en cours d'exécution, mais pas visible avec aucun moyen de le tuer autrement que par le Gestionnaire des tâches. Des idées sur la façon de gérer cela? Je m'attends à ce qu'il soit plutôt commun que l'utilisateur se ferme de cette manière.

Merci!

Répondre

0

Comme vous avez dit que vous obtenez la poignée de l'AP et le transmettre à PP, donc PP a cette poignée autour, donc quand AP est PP fermé peut vérifier si cette poignée de fenêtre existe en utilisant l'API Windows IsWindow ou IsWindowVisible selon vos besoins

import win32gui 
win32gui.IsWindow(handle) 
win32gui.IsWindowVisible(handle) 
+0

Avec cette méthode, j'ai pu détecter si la fenêtre était ouverte sans demander directement au point d'accès. Je dois encore tuer l'application, mais je pense que ce sera la partie facile. Merci! – Fry

+0

Pourquoi vous devez tuer l'application? quelle application PP? –

1

Comment le contrôle de PP circule-t-il? S'il est piloté par les événements, il peut obtenir les événements appropriés à la fermeture de la fenêtre parent ou à la fin de ce processus AP; sinon, il pourrait "interroger" pour vérifier si la fenêtre ou le processus sont toujours là.

+0

C'est un peu difficile à dire; la communication entre les deux est à peu près une rue à sens unique. PP indique à AP ce qu'il doit faire et demande des informations au moment opportun, mais AP est une interface graphique, donc les sondages peuvent être bloqués via COM, donc je ne suis pas sûr de vouloir le faire constamment. En python, si un parent est fermé, devrait-il déclencher un événement avec l'enfant? – Fry

+0

Merci pour le conseil, j'ai sondé l'api au lieu de AP et cela semble très bien fonctionner. Merci de m'avoir lancé un chemin de travail :) – Fry

Questions connexes