Я ищу способ определения местоположения и размера окна, которое не является частью моего приложения в macOS, используя Swift (предпочтительно) или Objective-C для запрограммировать оверлей/hud. Возможно ли прочитать список всех процессов и начать с него или есть что-то похожее на функцию getWindowHandle() в api Windows?Определить положение окна на macOS с помощью swift (или Objective-C)
1
A
ответ
0
Взгляните на CGWindowListCopyWindowInfo
:
import CoreGraphics
if let windowList = CGWindowListCopyWindowInfo([.optionAll], kCGNullWindowID) as? [[String: AnyObject]] {
for window in windowList {
let number = window[kCGWindowNumber as String]!
let bounds = CGRect(dictionaryRepresentation: window[kCGWindowBounds as String] as! CFDictionary)!
let name = window[kCGWindowName as String] as? String ?? ""
print("number = \(number), name = \(name), bounds = \(bounds)")
}
} else {
print("Can't get window list")
}
windowList
является массивом CFDictionary
, который выше код мостиком в [String: AnyObject]
для легкой работы в Swift. Вот required и optional ключи для словарей. Все ключи определены как CFString
, вы должны свести их в String
.