2010-02-21 8 views
3

Je souhaite répondre à un certain type de nouvelle fenêtre ouverte par une application externe. J'ai une certaine expérience de trouver des applications et des fenêtres actuellement ouvertes (à l'échelle du système) en utilisant une partie de la fonctionnalité carbone, donc, en théorie, je pourrais juste vérifier toutes les quelques secondes. Cela nécessiterait d'obtenir une liste de toutes les fenêtres ouvertes et de la vérifier par rapport à une liste que je devrais maintenir, et je me sens très maladroit.Comment recevoir une notification d'ouverture d'une nouvelle fenêtre?

Comment puis-je obtenir une notification simple et claire lorsqu'une nouvelle fenêtre est lancée? Dois-je utiliser l'API d'accessibilité? Si oui, qu'est-ce que je recherche spécifiquement?

Répondre

1

D'abord, créez un serveur AXObserver. Ensuite, surveillez les lancements de toutes les applications susceptibles de vous intéresser. Lorsqu'un tel lancement se produit, créez une application AXUIElement pour ce processus et ajoutez-y votre observateur pour la notification kAXWindowCreatedNotification.

Je me demande si c'est la meilleure façon de faire ce que vous essayez de faire. Vous pouvez reculer un peu de cette solution (c'est-à-dire, en regardant de nouvelles fenêtres) et poser une autre question sur votre objectif.

+0

Merci - AXObserver est exactement ce dont j'avais besoin. Je sais que cela ressemble à une façon particulière de faire les choses mais je doute sérieusement qu'il existe une alternative pour mon application spécifique. –