2009-05-21 3 views
0

Gibt es eine API in Kakao, in der Sie den Namen eines Anwendungsfensters/-dokuments abrufen können? Ich habe bereits [[NSWorkspace sharedWorkspace] launchedApplication], um alle verfügbaren Anwendungen abzurufen, also habe ich Zugriff auf den Bundle-Namen oder die Prozess-ID. Worauf sollte ich achten, damit ich den Namen eines anderen Fensters/Dokuments eines anderen Programms erhalte?API zum Erfassen des Fensters/Dokumentnamens einer anderen Anwendung

Antwort

2

Sie gehen davon aus, dass die Anwendung nur ein Fenster hat. Das ist nicht wahr; Eine Anwendung kann viele Fenster haben.

Verwenden Sie für Ihre eigene App [NSApp windows], um eine Reihe von ihnen zu erhalten. Speziell für Dokumentfenster, ask the document controller.

Verwenden Sie für andere Anwendungen Accessibility oder CGWindowList, um ihre Fenster zu betrachten. Es gibt keine einfache Möglichkeit, nach Dokumentfenstern zu fragen, da nicht alle Apps dokumentenbasiert sind und nicht alle dokumentenbasierten Apps auf NSDocument basieren.

+0

Barrierefreiheit ist, was ich suche, danke für den Link. Um genau zu sein, es funktioniert für mich, ich möchte nur den Schlüssel Dokument/Schlüssel-Fenster-Name, der NSDocument-basierte App ist. Aber ich bin nur neugierig, gibt es eine Möglichkeit, Informationen über Windows in Anwendungen zu erhalten, die nicht NSDocument basieren? – John

+0

Accessibility funktioniert für alle Anwendungen. Das Problem ist, dass es Ihnen alle Fenster der Anwendung gibt, da es keine Dokumentfenster von anderen Fenstern unterscheiden kann. kAXFocusedWindowAttribute ist das Schlüsselfenster, aber das ist nicht immer ein Dokumentfenster. Es kann beispielsweise ein offenes Bedienfeld, ein Speicherbereich, ein Druckbereich, ein Warnfeld oder ein Infofeld sein. –

+0

(Sie können auch spezielle Tests für Apps wie die in CS4 verwenden. Ich benutze diese nicht, aber da die CS4-Apps nicht mit Spaces kompatibel sind, habe ich den Verdacht, dass sie auch bei der Zugänglichkeit fehlschlagen.) –