Ist es in Swift möglich, eine Liste aller Anwendungen mit einem Fenster im Vordergrund zu bekommen und dann die Größe und Position dieser Fenster einzustellen.Legen Sie die Größe und Position aller Fenster auf dem Bildschirm in swift
erhalte ich die Liste der Fenster Eigenschaften wie diese
let type = CGWindowListOption.optionOnScreenOnly
let windowList = CGWindowListCopyWindowInfo(type, kCGNullWindowID) as NSArray? as? [[String: AnyObject]]
for entry in windowList!
{
var owner = entry[kCGWindowOwnerName as String] as! String
var bounds = entry[kCGWindowBounds as String] as? [String: Int]
var pid = entry[kCGWindowOwnerPID as String] as? Int32
print ("\(owner) \(bounds) \(pid) ")
if owner == "Erinnerungen"
{ bounds!["X"] = 0
bounds!["Y"] = 0
print("reset bounds")
let appRef = AXUIElementCreateApplication(pid!); //TopLevel Accessability Object of PID
print(appRef)
var value: AnyObject?
let result = AXUIElementCopyAttributeValue(appRef, kAXWindowsAttribute as CFString, &value)
if result == .success, let windowList = value as? [AXUIElement]
{ // DO ANYTHING
} else
{ print("Result no Success or no valid windowlist returnd")
}
}
}
Jetzt versuche ich einige der propierties zu ändern, aber das hat keine Wirkung. Auch die Attribute für die TopLevel Barrierrefreiheit Objekt von PID kehrt AXError (kAXErrorCannotComplete = -25.204)
Die Beschreibung dieses Fehlers ist: Die Die Funktion kann nicht abgeschlossen werden, weil die Nachrichtenübertragung fehlgeschlagen ist oder weil die Anwendung, mit der die Funktion kommuniziert, beschäftigt oder nicht reagiert. –
Ich habe mit 2 Systemanwendungen Terminal und Erinnerungen versucht. Mit beiden kAXErrorCannotComplete = -25204. Sollten System-Apps keine Barrierefreiheit unterstützen? – mica
Ich musste die Sandbox ausschalten, um diesen Fehler zu vermeiden – mica