以下代码在 Mojave 中运行良好。
let options = CGWindowListOption(arrayLiteral: CGWindowListOption.excludeDesktopElements, CGWindowListOption.optionOnScreenOnly, CGWindowListOption.optionOnScreenAboveWindow)
let windowList = CGWindowListCopyWindowInfo(options, kCGNullWindowID) as NSArray? as? [[String: AnyObject]]
for entry in windowList!
{ let name = (entry[kCGWindowName as String] != nil) ? entry[kCGWindowName as String] as! String : ""
...
在卡特琳娜
entry[kCGWindowName as String]
总是为零
在 SO:Detecting screen recording settings on macOS Catalina 我读到,如果启用了“屏幕录制 API”以及如何检测,这不是必需的。
不幸的是,我不知道如何启用“屏幕录制 API”。
正如 SO: macOS Catalina screen recording permission 中提到的,我打开了自动代码签名。
在系统偏好设置中,我看不到“+”来添加应用程序,以授予“屏幕录制”。
如何授予录屏API权限?
最佳答案
这是一个请求访问屏幕录制的低级 API。调用此函数将提示允许访问屏幕录制。
/* Requests event listening access if absent, potentially prompting */
@available(macOS 10.15, *)
public func CGRequestScreenCaptureAccess() -> Bool
关于macos - 在 Catalina 中启用屏幕录制 API (kCGWindowName),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59337022/