windows - Identificer en ny enhed i java

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne vide, hvornår en ny enhed er tilsluttet.


Jeg lærte at det er muligt at få alle de nuværende enheder i C # ved hjælp af:


ManagementObjectSearcher searcher = new ManagementObjectSearcher("Select VolumeName, DeviceID from Win32\_LogicalDisk Where Not (VolumeName is null)");


og derefter searcher.get() returnerer en samling af enhederne.


Er der noget parallelt med ManagementObjectSearcher, som jeg kan bruge i java?
Hvis ikke, er der en anden måde at få listen over tilsluttede enheder til? eller en anden måde at finde ud af, hvornår en ny enhed er forbundet?


Tak.

Bedste reference


Jeg ved ingen reel cross platform måde at gøre dette i Java. Hvis du er tilfreds med en Windows-løsning, vil den enkleste løsning være at generere en C #/VBScript-eksekverbar du kan ringe fra dit Java-program med Runtime.exec().


Hvis du vil have en 'pænere' løsning, der kræver lidt mere arbejde (men stadig kun Windows), kan du bruge iKVM til at interfere mellem dine C # og Java-programmer. [4]


Det eneste, jeg kan tænke på fra et tværplatformsperspektiv (og det bruger stadig indbyggede biblioteker, at bruge RXTX til at undersøge en opgørelse på COM-portene, og kontrollere, hvornår der sker noget. Dette vil ikke give dig en liste over alle enheder , og det fungerer kun for enheder, der bruger en COM-port, men afhængigt af dine behov kan det være nok. Den positive side med denne tilgang er, at RXTX-binarier frit eksisterer for hver fælles platform derude.