Windows如何用JNA截屏?

How to take a screenshot with JNA in Windows?

我找到了一些代码示例,但我不知道哪些 JNA 版本可以使用哪些方法。我只找到了片段,其中缺少 类,我无法导入它们。

我想知道我应该使用哪个 JNA 版本以及如何获取屏幕截图 BufferedImage

所需导入的列表也很好。

好像有several examples at this link。出于讨论目的,我将在下面讨论一个 (#3),但您可能会发现其他示例之一更适用于您的情况,希望这个答案能帮助您理解该过程。

在示例之前,我将回答您的问题"which JNA versions"...您几乎在所有情况下都应使用最新版本。 JNA 是一个用户支持的库,核心 JNA 代码没有太大变化,但每个新版本都会添加更多用户贡献的本地函数映射。请注意他们的常见问题解答问题 "JNA is missing function XXX in its platform library mappings" 和答案 "No, it's not, it's just waiting for you to add it :)"。如果您需要的映射不在 JNA 中,您可以使用提供的示例简单地添加它,以满足您的即时需求。更好的是,将您的映射贡献给 JNA 项目,这样下一个遇到您情况的人就会从您所做的工作中受益!

现在,link 中的示例 #3 截取了整个屏幕的屏幕截图,returns 将其作为 BufferedImage 对象。 The full source code for that example shows all the imports you will need, most from JNA's WinGDI class

如果您滚动到 class 的底部,您可能还会看到作者已经扩展了两个 JNA 平台接口贡献,其中的映射不在 JNA 中(或者不在 2010 年,当时该代码被写入)。您将不得不进行类似的映射(并可能在完成后将它们贡献给各自的 JNA classes)。