macos - 在 Catalina 中启用屏幕录制 API (kCGWindowName)

标签 macos cocoa macos-catalina screen-recording

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

相关文章:

c++ - 如何在 CLion 中设置 -v 编译器选项并查看相应结果

iphone - 处理 NSNumber 时,NSMutableDictionary 根据对象的地址或值进行查找?

xcode - MobileDevice.pkg 不受信任,OS X 更新后无法打开 Xcode

macos - 是否有针对在 MacOS 上设置 net.inet.ip.scopedroute=0 导致的 ARP 条目损坏的解决方法?

java - 运行 javafx 应用程序时没有出现窗口

objective-c - 澄清 Cocoa 语法中的星号和下划线

objective-c - [NSRegularExpression stringByReplacingMatchesInString] 的意外行为

iphone - UIFileSharingEnabled 只保存文件

macos - 如何确定 Gatekeeper 拒绝签名的可执行文件的原因?

ios - 多次使用 Text 时,SwiftUI 上没有更多上下文,表达式类型不明确,如何解决?