Mac / Cocoa - Abrufen einer Liste von windows mit Accessibility-API
Ich will das Accessibility-API, um eine Liste der alle Fenster für eine gegebene Anwendung (extern).
Ziel ist es zu prüfen, ob ein bestimmtes Fenster geöffnet ist. Zuerst habe ich überprüfen, dass die Anwendung ausgeführt wird (unter Verwendung von [NSWorkspace runningApplications] und die überprüfung jedes), und dann möchte ich überprüfen Sie die Titelleiste von jedem Fenster, das geöffnet ist für diese Anwendung.
PS
So kann ich ein element erstellen, die für die Anwendung mit dem PID:
AXUIElementRef app = AXUIElementCreateApplication(pid);
aber was Mach ich mit ihm? Bin ich auch in die richtige Richtung gehen? Kann nicht glauben, es ist so schwer, Beispiele zu finden, die auf dieser.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
AXUIElementCopyAttributeValues
kopieren Sie den Wert fürkAXWindowsAttribute
, das sollte ein array von AXUIElement-Objekte, die die Anwendung von windows zu verwenden.Wie können Sie erraten, die Namen der Funktionen, es folgt der Regel kopieren.
kAXErrorCannotComplete
wenn Sie versuchen zu bekommenAXUIElementCopyAttributeNames
(ich bin immer dieAXUIElementRef
wie auf der ursprünglichen Frage, würde es das problem sein?!).Ich weiß nicht, einen Weg, um Fenster-ID und PID aus der Accessibility-API.
Die NSWindow-Methode Laurent erwähnt nur Fenster-IDs aber nicht die PID des Fensters der Besitz Anwendung.
Ich würde das CGWindowList Methoden, die verfügbar sind seit 10.5.
Eine Liste von Fenster-IDs und die PID des Eigentümers können Sie Folgendes versuchen:
Können Sie Steuern, wenn Sie möchten, dass alle Fenster (auch offscreen, ...) mit der option Parameter.
Auch die entry-Objekte enthalten viel mehr Informationen. Link zur Dokumentation
kCGNullWindowID
im Swift...kCGNullWindowID
Können Sie windowNumbersWithOptions:. Es listet alle windows von all den Anwendungen, die durch Ihre Anzahl. Aber ich kann nicht herausfinden, wie man eine NSWindow aus einem Fenster Nummer...