mic*_*ica 6 macos cocoa screen-recording macos-catalina
以下代码在 Mojave 中运行良好。
\n\nlet options = CGWindowListOption(arrayLiteral: CGWindowListOption.excludeDesktopElements, CGWindowListOption.optionOnScreenOnly, CGWindowListOption.optionOnScreenAboveWindow)\nlet windowList = CGWindowListCopyWindowInfo(options, kCGNullWindowID) as NSArray? as? [[String: AnyObject]]\n\nfor entry in windowList!\n{ let name = (entry[kCGWindowName as String] != nil) ? entry[kCGWindowName as String] as! String : ""\n ...\nRun Code Online (Sandbox Code Playgroud)\n\n位于卡塔利娜岛
\n\nentry[kCGWindowName as String] \nRun Code Online (Sandbox Code Playgroud)\n\n总是为零
\n\n在《SO:检测 macOS Catalina 上的屏幕录制设置》中,我读到,启用“屏幕录制 API”需要 xc2xb4t 以及如何检测它是否已启用。
\n\n不幸的是我不知道如何启用“屏幕录制API”。
\n\n正如 SO: macOS Catalina 屏幕录制权限中所述,我打开了自动代码签名。
\n\n在系统偏好设置中,我没有看到用于添加应用程序、授予“屏幕录制”的“+”。
\n\n如何授予录屏API权限?
\n小智 5
这是一个低级 API,用于请求访问屏幕录制。调用此函数将提示您授予屏幕录制权限。
/* Requests event listening access if absent, potentially prompting */
@available(macOS 10.15, *)
public func CGRequestScreenCaptureAccess() -> Bool
Run Code Online (Sandbox Code Playgroud)
小智 2
您需要调用任何屏幕录制 API 函数。例如截图:
(void)showScreenRecordingPrompt {
/*
macos 10.14 and lower do not require screen recording permission
to get window titles
*/
if(@available(macos 10.15, *)) {
/*
To minimize the intrusion just make a 1px image of the upper left corner
This way there is no real possibilty to access any private data
*/
CGImageRef screenshot = CGWindowListCreateImage(
CGRectMake(0, 0, 1, 1),
kCGWindowListOptionOnScreenOnly,
kCGNullWindowID,
kCGWindowImageDefault);
CFRelease(screenshot);
}
Run Code Online (Sandbox Code Playgroud)
解决方案是从这里获得的:https://blog.csdn.net/lovechris00/article/details/96979960
| 归档时间: |
|
| 查看次数: |
2885 次 |
| 最近记录: |