Получить простой текст из SunAwtCanvas - PullRequest
3 голосов
/ 22 декабря 2011

Поскольку невозможно захватить текст с холста Java с помощью стандартных функций Windows API, таких как GetMessage(), я подумал, есть ли способ подключить метод drawText() внутри такого холста Java и захватить текст до того, как на самом деле были нарисованы на холсте. У кого-нибудь есть идеи как это решить? Решение, написанное на языке Java, также будет принято. Любое предложение было бы хорошо, спасибо.

Edit: Можно ли украсть ручку чужого холста и установить ее на свой холст? Таким образом, внешнее приложение больше не рисовало бы на своем холсте, а на моем поддельном. Таким образом, я мог легко переопределить метод drawText() в моем приложении.

Ответы [ 2 ]

1 голос
/ 31 декабря 2011

Используйте Java Instrumentation для внедрения кода в drawString (), например, с помощью Javassist.

Вы можете комбинировать код из здесь , чтобы внедрить ваш код с insertBefore и там для активации преобразования в методе premain.

0 голосов
/ 22 декабря 2011

Было бы достаточно легко написать свой собственный подкласс Graphics2D и сделать рисование на этом;Ваш подкласс может переопределить drawString(), чтобы делать все, что вы хотите.Вероятно, я бы написал реализацию в виде оболочки, которая перенаправляла все вызовы методов другому экземпляру, указанному в качестве аргумента конструктора, так как ваш подкласс мог бы использоваться для прямой записи на экран.Конечно, обязательно реализуйте create() для возврата нового экземпляра вашего подкласса.

...