3

由于不可能通过使用标准的 Windows API 函数(GetMessage()drawText()有谁知道如何解决这个问题?也可以接受用 java 编写的解决方案。任何建议都会很好,谢谢。

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

4

2 回答 2

1

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

您可以结合此处的代码来注入您的代码,insertBefore在那里激活premain方法中的转换。

于 2011-12-30T22:45:22.167 回答
0

Graphics2D编写自己的子类并在其上完成绘图很容易;你的子类可以覆盖drawString()做任何你想做的事情。我可能会将实现编写为包装器,它将所有方法调用转发到指定为构造函数参数的另一个实例,因为这样您的子类可以用于直接写入屏幕。当然,一定要实现create()返回子类的新实例。

于 2011-12-22T14:25:52.117 回答