从SunAwtCanvas获取纯文本

时间:2011-12-22 14:11:19

标签: java winapi canvas getmessage

由于使用标准Windows API函数(如GetMessage())无法从java画布捕获文本,因此我想知道是否有任何方法可以将drawText()方法挂钩到这样的java画布中并捕获它之前的文本实际上是在画布上绘制的。有谁知道如何解决这个问题?用java编写的解决方案也将被接受。任何建议都会很好,谢谢。

编辑: 是否可以窃取外国帆布手柄并将其设置为我自己的画布?因此,外国应用程序将不再绘制到它的画布,而是绘制到我的欺骗画面。通过这种方式,我可以在我的应用程序中轻松覆盖drawText()方法。

2 个答案:

答案 0 :(得分:1)

使用Java Instrumentation将代码注入drawString(),例如使用Javassist。

您可以合并here中的代码,将代码注入insertBeforethere,以便在premain方法中激活转换。

答案 1 :(得分:0)

编写自己的Graphics2D子类并完成绘图是很容易的;您的子类可以覆盖drawString()来执行您喜欢的任何操作。我可能会将实现编写为一个包装器,它将所有方法调用转发给指定为构造函数参数的另一个实例,因为您可以使用子类直接写入屏幕。当然,请确保实现create()以返回子类的新实例。