【发布时间】:2019-12-14 16:29:59
【问题描述】:
以下代码在 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权限?
【问题讨论】:
-
我的情况有所不同,因为我通过 nodejs 使用 javascript,但我觉得它是相关的。我在使用空窗口名称时遇到了同样的问题。你可以在这里查看代码:github.com/karaggeorge/mac-screen-capture-permissions,它最终使我能够在 catalina 中请求屏幕录制权限。我的应用现在有屏幕录制权限,但仍然无法获取窗口名称。
-
我收回!我有一个不相关的错误。我可以确认获取窗口名称在获得许可的情况下工作,没有它就会失败。
标签: macos cocoa macos-catalina screen-recording