Как получить список USB-устройств из браузера
Какая технология на основе браузера позволила бы мне запрашивать подключенные в данный момент USB-устройства клиента, в частности их имя и идентификатор. Конечно, я согласен с тем, что клиент должен разрешать и подтверждать такую деятельность.
Мне все равно, если на низком уровне, он использует WMI, прямой доступ или какой-то другой уровень доступа, все, что я хочу, это иметь возможность использовать его из браузера. Я был бы признателен за примеры кода и был бы очень доволен независимым от браузера решением.
7 ответов
Я немного разочарован отсутствием попыток хотя бы дать мне частичное решение. Хотя я не смог найти независимое от браузера решение, я предложил одно для IE в Windows, используя WMI, точнее WbemScripting.SWbemLocator
ActiveX Object. Это лучше, чем ничего, лучше, чем "ты не можешь этого сделать".
Итак, для всех, кто заинтересован, вот оно:
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);
Да, это только на IE на Windows. Да, для этого нужно разрешение пользователя. Но, ДА, это что-то, возможно, оно делает то, что мне нужно.
Если кто-то знает другой путь - и я говорю здесь о коде, а не мнениях, я все еще ищу частичные решения для других браузеров и операционных систем. Запрашивать USB-устройства - интересная вещь, и, несмотря на все аргументы, я говорю, что "это программное обеспечение, оно должно что-то делать, а не мешать вам что-то делать".
Вы не можете сделать это из браузера (по причинам). Вам понадобится плагин, который должен установить пользователь.
IE ActiveX, панель инструментов IE, оболочка плагина Netscape (для Opera/Windows, Firefox/Windows, возможно Chrome/Windows) => WMI. Предположительно, любой подобный материал будет запрещен любым антивирусным программным обеспечением уровня Scrapyard.
Вы можете: a> пойти по этому пути, b> использовать встроенную поддержку смарт-карт вместо создания USB-ключей безопасности c> написать свое собственное программное обеспечение, которое запустит веб-сервер 127.0.0.1 и получит к нему доступ из javascript на вашей странице (где установка загрузки предлагается).
Java-апплет. Вы можете использовать http://javax-usb.org/.
И это было сделано с помощью Java-апплетов http://forums.sun.com/thread.jspa?threadID=5371360
Так что решение, безусловно, существует!!!
Невозможно сделать это с помощью стандартного JavaScript.
Может работать с ActiveX(только IE и Windows) или Flash или расширением браузера (для каждой ОС).
Хм, от всей головы, я думаю, что XBAP может помочь вам. http://www.xbap.org/. С тех пор это просто C# с некоторым #usblib.
Отредактируйте Хм, он говорит, что запускается, работает в режиме песочницы. И, похоже, плагин только для IE. Я думаю, XBAP - это мисс.