在java中识别新设备

在java中识别新设备,java,windows,device,Java,Windows,Device,我想知道什么时候连接了新设备 我了解到,可以使用以下方法获得C中的所有当前设备: ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select VolumeName, DeviceID from Win32_LogicalDisk Where Not (VolumeName is null)"); 然后searcher.get返回设备的集合 我可以在java中使用与ManagementObjectSearche

我想知道什么时候连接了新设备

我了解到,可以使用以下方法获得C中的所有当前设备:

ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select VolumeName, DeviceID from Win32_LogicalDisk Where Not (VolumeName is null)");
然后searcher.get返回设备的集合

我可以在java中使用与ManagementObjectSearcher类似的东西吗? 如果没有,是否有其他方法获取已连接设备的列表?或者用另一种方法来确定何时连接新设备


谢谢。

我知道在Java中没有真正的跨平台方法可以做到这一点。如果您对仅限Windows的解决方案感到满意,最简单的解决方案是生成一个C/VBScript可执行文件,您可以使用Runtime.exec从Java程序调用该文件

如果您想要一个更好的解决方案,它需要更多的工作,但仍然只能使用Windows来连接C和Java程序


从跨平台的角度来看,我能想到的唯一一件事是使用RXTX在COM端口上轮询枚举,并在发生更改时检查。这不会为您提供所有设备的列表,并且只适用于使用COM端口的设备,但根据您的需要,这可能就足够了。这种方法的优点是RXTX二进制文件可以自由地存在于每个通用平台上。

我知道在Java中没有真正的跨平台方法来实现这一点。如果您对仅限Windows的解决方案感到满意,最简单的解决方案是生成一个C/VBScript可执行文件,您可以使用Runtime.exec从Java程序调用该文件

如果您想要一个更好的解决方案,它需要更多的工作,但仍然只能使用Windows来连接C和Java程序


从跨平台的角度来看,我能想到的唯一一件事是使用RXTX在COM端口上轮询枚举,并在发生更改时检查。这不会为您提供所有设备的列表,并且只适用于使用COM端口的设备,但根据您的需要,这可能就足够了。这种方法的优点是RXTX二进制文件可以自由地存在于每个通用平台上。

执行这种windows特定的查找通常使用VB脚本完成,您可以从Runtime.exec调用该脚本。你有这种可能性吗?您也可以从Java调用c程序。执行这种特定于windows的查找通常使用VB脚本完成,您可以从Runtime.exec调用该脚本。你有这种可能性吗?您还可以从Java调用c程序。