Захват изображения курсора

Можно ли сделать снимок окна 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 автоматически пропускает окно курсора. Можно ли остановить его от этого? Может дублировать окно и запечатлеть это?

Другие вещи, которые я пробовал

  1. Получение изображения с помощью NSCursor.currentCursor().image но так как мое приложение является фоновым приложением, я вынужден использовать NSCursor.currentSystemCursor().image который всегда возвращает изображение без сетчатки.
  2. Выяснить, какие NSCursor.currentSystemCursor().image возвращается и пытается получить версию сетчатки... просто невозможно сравнить, какой экземпляр возвращен.

0 ответов

Другие вопросы по тегам