相关疑难解决方法(0)

在macOS Catalina上检测屏幕录制设置

检测用户是否已启用此API的可靠方法是什么?

CGWindowListCreateImage即使禁用了屏幕录制API,也将返回有效对象。可能有多种组合(kCGWindowListOptionIncludingWindowkCGWindowListOptionOnScreenBelowWindow),只有一些组合会返回NULL。

- (CGImageRef)createScreenshotImage
{
    NSWindow *window = [[self view] window];
    NSRect rect = [window frame];

    rect.origin.y = NSHeight([[window screen] frame]) - NSMaxY([window frame]);
    CGImageRef screenshot = CGWindowListCreateImage(
                                                    rect,
                                                    kCGWindowListOptionIncludingWindow,
                                                    //kCGWindowListOptionOnScreenBelowWindow,
                                                    0,//(CGWindowID)[window windowNumber],
                                                    kCGWindowImageBoundsIgnoreFraming);//kCGWindowImageDefault
    return screenshot;
}
Run Code Online (Sandbox Code Playgroud)

唯一可靠的方法是CGDisplayStreamCreate冒险,因为Apple每年都会更改隐私设置。

   - (BOOL)canRecordScreen
    {
        if (@available(macOS 10.15, *)) {
            CGDisplayStreamRef stream = CGDisplayStreamCreate(CGMainDisplayID(), 1, 1, kCVPixelFormatType_32BGRA, nil, ^(CGDisplayStreamFrameStatus status, uint64_t displayTime, IOSurfaceRef frameSurface, CGDisplayStreamUpdateRef updateRef) {
                ;
            });
            BOOL canRecord = stream != NULL;
            if (stream) …
Run Code Online (Sandbox Code Playgroud)

macos cocoa screen-recording macos-catalina

13
推荐指数
2
解决办法
3491
查看次数

以编程方式截图| Swift 3,macOS

是否可以使用Swift 3以编程方式在mac上截取桌面?我找不到关于该主题的单个帖子或论坛帖子,甚至在Apple的官方文档中都没有.

到目前为止,我已经找到了这个,但似乎没有帮助: 两个

macos screenshot swift

12
推荐指数
2
解决办法
4119
查看次数