少なくとも部分的な解決策を提供しようとしていないことに少しがっかりしています。ブラウザーに依存しないソリューションを見つけることはできませんでしたが、WMI、より正確にはWbemScripting.SWbemLocator
ActiveX オブジェクトを使用して、Windows 上の IE 用のソリューションを見つけました。何もしないよりはましです。「できない」よりはましです。
だから、興味のある人のために、ここにあります:
function pollConnectedDevices()
{
var locator = new ActiveXObject("WbemScripting.SWbemLocator");
var conn = locator.ConnectServer(".", "root\\cimv2");
var result = conn.ExecQuery("Select * From Win32_USBHub");
var enumer = new Enumerator(result);
for (;!enumer.atEnd();enumer.moveNext ())
{
var hub = enumer.item ();
alert(hub.Name + " " + hub.DeviceId);
}
setTimeout("pollConnectedDevices()",1000);
}
setTimeout("pollConnectedDevices()",1000);
はい、Windows 上の IE のみです。はい、そのことを行うにはユーザーの許可が必要です。しかし、はい、それは何かです、それは可能です、それは私がする必要があることをします.
他の誰かが別の方法を知っている場合、ここでは意見ではなくコードについて話しているので、他のブラウザーや OS の部分的な解決策を探しています。USB デバイスのクエリは興味深いものであり、さまざまな議論がありますが、私は「これはソフトウェアであり、何かを実行するためのものであり、ユーザーが何かを実行するのを妨げるものではありません」と述べています。