【问题标题】:How to access information in Windows Device Manager from Java?如何从 Java 访问 Windows 设备管理器中的信息?
【发布时间】:2013-02-28 14:52:33
【问题描述】:

我有一个串口转 USB 设备,并且可以将多个设备连接到计算机。我需要查询和检索设备连接到的 COM 端口列表。在 Windows 设备管理器中,您可以获得当前连接的设备的 COM 端口 + 友好名称。此列表是动态的。

从注册表中读取did not work,因为存储的信息是陈旧的和静态的,而不是动态的。

Devcon(来自 Microsoft)确实列出了设备连接到的端口,但它不能在我的应用程序中使用,因为它不可重新分发。

有什么想法或最好的解决方案吗?

【问题讨论】:

  • 你知道如何读写COM端口吗?在这里查看:java-samples.com/showtutorial.php?tutorialid=11(使用 javax.comm 包)。然后你可以简单地遍历所有端口来找到你正在寻找的端口,不是吗?
  • @Sebastian 我不知道你是否仔细阅读了这个问题。 “...检索设备连接到的 COM 端口列表。”
  • 我给了你一个很好的解决方法
  • @Sebastian 让我解释一下:我不想要所有 COM 端口的列表。我已经可以得到了。我想要一个连接到特定设备的 COM 端口列表。在 Windows 设备管理器中,您可以获得当前连接的设备的 COM 端口 + 友好名称。此列表是动态的。我是否清楚地传达了这一点,还是我遗漏了什么?

标签: java windows winapi


【解决方案1】:

几周前我不得不解决一个类似的问题。我遇到了Jawin-Project,它提供了使用 WMI 查询所需的一切。它已经很老了,但如果你遵循文档,它就像一个魅力。可以在codegods blog 找到一个不错的德语演练。

对我来说,它并没有解决所有问题(我有一些关于目标设备的非常具体的事情要找出),我终于创建了一个自己的 JNI (Java Native Interface) 类和 C 中包含 windows API 的 DLL。

我希望这是您搜索的内容。

【讨论】:

  • 谢谢。您访问了 Windows API 的哪一部分以获取有关连接了哪些设备的信息?
  • JNA 似乎会更容易,但它是 LGPL github.com/twall/jna。我不确定它是否可以用于商业产品。
  • 2005 年,我为另一个项目寻找 Jawin,它很难使用 - 它假定了解 Windows API 和内部结构。在邮件列表上很难得到任何回复,而且似乎被放弃了。最后我使用了 NJawin,它是 Vitaly Shelest 的 Java-COM 桥,似乎也最终被放弃了。然而对于这个项目,8年后,我相信一定有更好的选择。对我来说,只有在更好的选择失败时,才使用 JNI 调用 C 中的 DLL 是最后的手段。
【解决方案2】:

您尝试过jUSB APIThis example 吗?

希望对你有帮助。

【讨论】:

  • 感谢您的链接。我去了jusb网站。似乎是废弃软件 - 自 2001 年以来没有更新。第二个链接是针对文件系统的,我的不是。
  • 看来你还是对这个感兴趣,所以我会自己尝试一下,然后告诉你.. :)
【解决方案3】:

使用 JNA (https://github.com/twall/jna) 并查看以下页面。这可能是一个有用的起点。

http://www.digitalinferno.com/wiki/Wiki.jsp?page=JNAPrintDevices

【讨论】:

    【解决方案4】:

    我正在查看Java Native Access,因为它提供了从纯 Java 代码访问 Windows API 的权限 - 无需处理 JNI。我担心 LGPL 许可证;它是否可以包含在商业产品中,但是从新闻组中的一些帖子中可以看出,它可以。 在接下来的几周内尝试后,我将在这里发布。

    【讨论】:

    • 您是否设法让它与 JNA 一起工作?请分享您的经验吗?我正在尝试编写一个在插入(热插拔)时检测驱动器的程序,我想知道 JNA 是否有帮助。 tnx!!
    • 这在 Windows digitalinferno.com/wiki/Wiki.jsp?page=JNAPrintDevices 上运行良好(还不知道什么许可证)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 2023-02-08
    • 1970-01-01
    • 2010-09-26
    相关资源
    最近更新 更多