Найдите окно из AXUIElementCopyAttributeValue с его windowNumber, чтобы изменить его положение - PullRequest
0 голосов
/ 04 мая 2019

Я хочу переместить окно с помощью API доступа.

Со следующим фрагментом

let options = CGWindowListOption(arrayLiteral: CGWindowListOption.excludeDesktopElements, CGWindowListOption.optionOnScreenOnly, CGWindowListOption.optionOnScreenAboveWindow)
let windowList = CGWindowListCopyWindowInfo(options, kCGNullWindowID) as NSArray? as? [[String: AnyObject]]

for entry  in windowList!
{ if let  bounds = entry[kCGWindowBounds as String] as? [String: Int],
     let owner = entry[kCGWindowOwnerName as String] as? String,
     let pid = entry[kCGWindowOwnerPID as String] as? Int32,
     let windowNumber = entry[kCGWindowNumber as String] as? Int32
  {  print("\(owner)  (\(pid)-\(windowNumber))")
     .....

обнаружены активные окна.

Для некоторых процессов (например, заметок) я получаю записи с тем же pid, но с другим windowNumber. Я хочу переместить окно с заданным pid и windowNumber.

Я пробовал с этим фрагментом:

let appRef = AXUIElementCreateApplication(pid); 
var value: AnyObject?
let result = AXUIElementCopyAttributeValue(appRef, kAXWindowsAttribute as CFString, &value)

if let windowList = value as? [AXUIElement]
{ ...

Возвращает список окон процесса. Я хочу переместить одно из этих окон с заданным номером окна (из фрагмента выше)

Как мне найти это окно?

...