捕获光标窗口的图像

时间:2016-01-17 16:39:53

标签: macos cocoa nscursor

是否可以捕获NSCursor窗口的图像?这是我的代码

获取光标窗口的原始值

let level = CGWindowLevelForKey(.CursorWindowLevelKey).int

我有一个方法,使用CGWindowListCopyWindowInfo迭代屏幕上的所有窗口,并返回由" Window Server"

拥有的Cursor窗口的窗口号
let number = self.windowNumber(level, screen: screen, options: nil) //returns proper window number
let frame = screen.frame //screen is the current NSScreen that the mouse is in. 

let cgimage = CGWindowListCreateImage(frame, .OptionIncludingWindow, CGWindowID(number), .Default)!

转换为NSBitmapImageRep

let cursor = NSBitmapImageRep(CGImage: cgimage)

然后将光标的屏幕截图保存到磁盘。

这适用于所有其他窗口,除了光标,它保存一个空白窗口。我尝试过使用一堆不同类型的帧,但没有去。我假设这是因为CGWindowListCreateImage会自动省略光标窗口。有可能阻止它省略吗?也许复制窗口并捕获它?

我尝试过的其他事情

  1. 使用NSCursor.currentCursor().image获取图片,但由于我的应用是仅限背景的应用,因此我不得不使用NSCursor.currentSystemCursor().image来永久返回非视网膜图像。
  2. 弄清楚哪个NSCursor.currentSystemCursor().image正在返回并尝试获取视网膜版本......只是无法比较哪个实例被带回来了。

0 个答案:

没有答案