Detecting screen recording settings on macOS Catalina

后端 未结 7 1558
清歌不尽
清歌不尽 2020-11-30 23:01

What\'s is a reliable way to detect if user has enabled this API?

CGWindowListCreateImage returns a valid object even if screen recording API is disable

7条回答
  •  旧时难觅i
    2020-11-30 23:36

    The above answer is not working fine. Below is the correct answer.

    private var canRecordScreen : Bool {
        guard let windows = CGWindowListCopyWindowInfo([.optionOnScreenOnly], kCGNullWindowID) as? [[String: AnyObject]] else { return false }
        return windows.allSatisfy({ window in
            let windowName = window[kCGWindowName as String] as? String
            let isSharingEnabled = window[kCGWindowSharingState as String] as? Int
            return windowName != nil || isSharingEnabled == 1
        })
      }
    

提交回复
热议问题