Спасибо! Это единственный пример, который я нашел, который на самом деле работает со Swift. Кроме того, он работал только после включения вспомогательного контроля xcode и xcode в системных настройках -> безопасность и конфиденциальность -> доступность. Также отключите песочницу в разделе возможностей вашего приложения, как предложено @mica

ли в swift получить список всех приложений с окном на переднем плане, а затем установить размер и положение этих окон.

Я получаю список свойств Windows, как это

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")          
    }
  }
}

Сейчас я пытаюсь изменить некоторые из свойств, но это не имеет никакого эффекта. Также при попытке получить значение AttributeValue для объекта доступности TopLevel из PID возвращает AXError (kAXErrorCannotComplete = -25204)

 mica25 нояб. 2017 г., 20:56
Мне пришлось выключить песочницу, чтобы избежать этой ошибки
 Infinity James25 нояб. 2017 г., 17:02
Описание этой ошибки: функция не может быть завершена из-за сбоя обмена сообщениями или из-за того, что приложение, с которым взаимодействует функция, занято или не отвечает.
 mica25 нояб. 2017 г., 18:16
Я попробовал с 2 терминалами системных приложений и напоминаниями. С обоими kAXErrorCannotComplete = -25204. Разве системные приложения не должны поддерживать специальные возможности?

Ответы на вопрос(0)

Ваш ответ на вопрос