以下代码在 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/

10-12 23:43