JNA ScreenShot:GetDIBits在一段时间后返回false

时间:2014-04-24 22:25:22

标签: java screenshot jna

我使用this code在java中生成屏幕截图。我每秒使用该方法大约5-10次,从屏幕截图中计算出一些值并将它们发送出去,所以我不存储截图。这可以正常工作一段时间(10-30分钟),但随后该方法返回null,因为bufferedImageFromBitmap方法中的这一行ok = GDI.GetDIBits(blitDC, outputBitmap, 0, raster.getHeight(), pixels, bi, 0);返回false。

如果我再次调用该方法,它会再次返回null 我试图使用java.awt.Robot,如果JNA方法失败,但然后抛出OutOfMemoryException(我已经尝试了System.gc()并给程序更多的内存,但仍然抛出异常。),但在任务管理器中,我没有看到程序使用更多内存。

你知道我能做些什么吗(修复/解决方法/...)?

1 个答案:

答案 0 :(得分:0)

由于technomage,问题得以解决:
如果我只调用windowDC = GDI.GetDC(USER.GetDesktopWindow());一次然后重复使用windowDC,它就不会停止工作。