Я хочу определить, когда окно перемещается в режиме реального времени, и решил, что CGDisplayStreamCreate и т. д. должны обеспечить именно это. Но мне трудно решить, какое окно перемещается, когда вызывается мой CGDisplayStreamFrameAvailableHandler. Есть ли прямой способ сопоставить обновленные прямоугольники с приложением и его окнами?
Использование CGDisplayStream для обнаружения движения окна
Ответы (1)
CGDisplayStream не может сказать вам, какие приложения/окна отвечают за данное обновление экрана. Возможно, вы сможете использовать другой API, например Accessibility, чтобы определить расположение окон, а затем угадать, какой из kCGDisplayStreamUpdateMovedRects соответствует каждому окну, но это будет не очень надежно. Если вы собираетесь пойти по пути специальных возможностей, вы также можете использовать уведомления специальных возможностей для событий перемещения окна: Как мое приложение может обнаружить изменение в окне другого приложения?.
Если вам также нужно пиксельное содержимое окон, когда они перемещаются, вам нужно будет сделать некоторое неудачное выравнивание времени между обратными вызовами CGDisplayStream и Accessibility.
person
monoxygen
schedule
07.12.2014