以下代码在 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]
始终为零
在这样的情况下: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/