小编Mar*_*sey的帖子

kCGWindowSharingState实际上做了什么?

如果调用CGWindowListCopyWindowInfo(),则返回的CFDictionaryRef包含许多键和值.其中一个是kCGWindowSharingState,它有三个可能的值:

Window Sharing Constants
Specifies whether and how windows are shared between applications.

enum {
   kCGWindowSharingNone      = 0,
   kCGWindowSharingReadOnly  = 1,
   kCGWindowSharingReadWrite = 2
};
Run Code Online (Sandbox Code Playgroud)

我系统上的几乎所有窗口都是kCGWindowSharingReadOnly,SonOfGrab屏幕截图示例程序避免尝试捕获kCGWindowSharingNone窗口,但我找不到这些状态用于什么的良好描述.

一个简单的测试似乎表明,OS X附带的几个应用程序确实有设置为kCGWindowSharingNone的窗口,特别是Notes和iBooks.据我所知,通过快速测试,将窗口设置为kCGWindowSharingNone实际上并不会阻止CGWindowListCreateImage()捕获该窗口的图像.我找不到将kCGWindowSharingReadWrite设置为共享模式的窗口.

所有这些都在文档中的某处解释过,我只是错过了它,或者它只是更难以记录的Core Graphics功能?是否有充分的理由不尝试捕获kCGWindowSharingNone窗口,如果我尝试这样做,我将来会为自己设置麻烦吗?


进一步调查显示,当Cocoa应用程序调用时

[NSWindow setSharingType:]
Run Code Online (Sandbox Code Playgroud)

在窗口上设置kCGWindowSharingStateNone,阻止它被CGWindowListCreateImage()捕获.还有一些其他窗口设置了kCGWindowSharingStateNone,但可以成功捕获 - 特别是,iBooks会创建一个这样的窗口.

这可能是iBooks中的一个错误,或者是它调用的任何API(因为它不会调用NSWindow API).

macos cocoa core-graphics objective-c quartz-graphics

9
推荐指数
1
解决办法
733
查看次数

解析不完整或不正确的代码的任何引用?

有人可以指点我在解析包含语法错误的代码的技术,或者缺少必要的标点符号吗?

我正在处理的应用程序是一个IDE,我们希望提供诸如"跳转到定义",自动完成和重构功能之类的功能,而不需要在调用函数时源语法正确. .

我见过的大多数解析器代码似乎都是基于"早期失败"的原则,而不是专注于错误恢复或解析部分完整的代码.

parsing programming-languages heuristics

8
推荐指数
2
解决办法
503
查看次数