【问题标题】:How to take a screenshot with JNA in Windows?如何在 Windows 中使用 JNA 截屏?
【发布时间】:2020-03-21 11:30:45
【问题描述】:

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

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

所需的进口清单也很棒。

【问题讨论】:

  • 问题是如何在你的操作系统的 API 中截屏。
  • 好的,谢谢,忘记添加了。
  • 请在发帖前多花点时间完善您的问题。重读和拼写检查!
  • 您想要 C 答案还是 C++ 答案?
  • @larkey 因为问题指定了 JNA,所以它必须是 C。应该删除 C++ 标签。

标签: java c winapi screenshot jna


【解决方案1】:

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

在示例之前,我将回答您的问题“哪些 JNA 版本”...您几乎在所有情况下都应该使用最新版本。 JNA 是一个用户支持的库,核心 JNA 代码没有太大变化,但每个新版本都向本机函数添加了更多用户贡献的映射。请注意他们的常见问题解答问题"JNA is missing function XXX in its platform library mappings" 和答案“不,不是,它只是在等你添加它:)”。如果您需要的映射不在 JNA 中,您可以使用提供的示例简单地添加它,以满足您的即时需求。更好的是,将您的映射贡献给 JNA 项目,以便您的下一个人将从您所做的工作中受益!

现在,链接中的示例#3 截取整个屏幕的屏幕截图并将其作为BufferedImage 对象返回。该示例的The full source code 显示了您需要的所有导入,大部分来自JNA's WinGDI class

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多