2009-05-21 6 views
0

Existe-t-il une API dans le cacao dans laquelle vous pouvez récupérer le nom de fenêtre/document d'une application? J'ai déjà [[NSWorkspace sharedWorkspace] launchedApplication] pour récupérer toutes les applications disponibles, j'ai donc accès au nom du bundle ou à l'identifiant du processus. Que dois-je regarder afin de pouvoir obtenir le nom de fenêtre/document d'une autre application.API pour saisir le nom de la fenêtre/du document d'une autre application

Répondre

2

Vous supposez que l'application n'a qu'une seule fenêtre. Ce n'est pas vrai; une application peut avoir plusieurs fenêtres.

Pour votre propre application, utilisez [NSApp windows] pour obtenir un tableau d'entre eux. Pour les fenêtres de document en particulier, ask the document controller.

Pour les autres applications, utilisez Accessibility ou CGWindowList pour regarder leurs fenêtres. Il n'existe aucun moyen simple de demander uniquement des fenêtres de document, car toutes les applications ne sont pas basées sur des documents et toutes les applications basées sur des documents ne sont pas basées sur NSDocument.

+0

L'accessibilité est ce que je cherche, merci pour le lien. Pour être précis, cela fonctionne pour moi, je veux juste saisir le nom de la clé de document/clé qui est NSDocument app. Mais juste curieux, y a-t-il un moyen d'obtenir des informations sur les fenêtres dans les applications qui ne sont pas basées sur NSDocument? – John

+0

L'accessibilité fonctionne sur toutes les applications. Le problème est qu'il vous donnera toutes les fenêtres de chaque application, car il ne peut pas indiquer les fenêtres de document à partir d'autres fenêtres. kAXFocusedWindowAttribute est la fenêtre clé, mais il ne s'agit pas toujours d'une fenêtre de document. Il peut s'agir d'un panneau ouvert, d'un panneau de sauvegarde, d'un panneau d'impression, d'un panneau d'alerte ou d'un panneau About, par exemple. –

+0

(De plus, vous voudrez peut-être consacrer des tests spéciaux à des applications comme celles de CS4, mais je ne les utilise pas, mais comme les applications CS4 sont incompatibles avec Spaces, j'ai l'impression qu'elles peuvent échouer.) –

Questions connexes