Я хочу анимировать движение окна стороннего приложения OS X - PullRequest
0 голосов
/ 08 февраля 2011

Справочная информация: Недавно я получил два монитора и хочу, чтобы способ переместить сфокусированное окно на другой экран и наоборот.Я добился этого с помощью Accessibility API.(В частности, я получаю AXUIElementRef, который содержит AXUIElement, связанный с сфокусированным окном, затем я устанавливаю значение NSAccessibilityPositionAttribute для перемещения окна.

У меня это работает почти точно так, как я хочу, за исключениемдля анимации движения окон. Я думал, что если бы я мог каким-то образом получить NSWindow, я мог бы получить его слой и использовать CoreAnimation для анимации движения окна.

К сожалению, я обнаружил, что это невозможно.(Поправьте меня, хотя я ошибаюсь - если есть способ сделать это таким образом, это было бы замечательно!) Поэтому я прошу всех вас о помощи. Как мне сделать анимацию движения сфокусированного окна, еслиУ меня есть доступ к AXUIElementRef?

-R

- РЕДАКТИРОВАТЬ

Мне удалось получить грубую анимацию, создав цикл whileи перемещая положение окна на небольшую величину каждый раз, чтобы сделать успешную анимацию. Однако, результаты довольно не соответствуют. Как вы можете догадаться, это займетс большой ненужной вычислительной мощностью и все еще очень нестабильна. должен быть лучше.

1 Ответ

1 голос
/ 08 февраля 2011

Лучший возможный способ, который я могу себе представить, - это выполнить какое-то хакерское сравнение свойств между значениями информации AXUIElement для окна и информацией, возвращаемой из API CGWindow.Как только вы сможете определить, какие окна в CGWindow API соответствуют AXUIElementRefs, вы можете захватывать растровые изображения текущего содержимого окна, накладывать на экран свою собственную анимацию рисования искусственных окон, а затем, когда вы отбрасываете наложение, устанавливаете настоящий AXUIElementRefдо нужных анимационных позиций.

Хаки, tho.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...