Захват изображения курсора
Можно ли сделать снимок окна NSCursor? Вот мой код
Получить необработанное значение окна курсора
let level = CGWindowLevelForKey(.CursorWindowLevelKey).int
У меня есть метод, который перебирает все окна на экране, используя CGWindowListCopyWindowInfo и возвращает номер окна окна курсора, который принадлежит "Window Server"
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 автоматически пропускает окно курсора. Можно ли остановить его от этого? Может дублировать окно и запечатлеть это?
Другие вещи, которые я пробовал
- Получение изображения с помощью
NSCursor.currentCursor().image
но так как мое приложение является фоновым приложением, я вынужден использоватьNSCursor.currentSystemCursor().image
который всегда возвращает изображение без сетчатки. - Выяснить, какие
NSCursor.currentSystemCursor().image
возвращается и пытается получить версию сетчатки... просто невозможно сравнить, какой экземпляр возвращен.