2010-09-10 18 views
5

Я пытаюсь создать функцию, которая определяет, подключено ли устройство USB с учетом устройств pid и vid. Я надеюсь, что это будет выглядеть примерно так, я просто не уверен, как это сделать на C#.USB-устройство подключено

public bool IsUsbDeviceConnected(string pid, string vid) 
{ 
    //Code here 
} 
+2

Пожалуйста, измените ваш вопрос; добавление следующих пунктов может дать вам лучшие ответы: 1. Что вы пробовали до сих пор? 2. Какие результаты вы получили? 3. Как это отличалось от ожидаемых результатов? – Piskvor

ответ

5
//using System.Management 
public bool IsUsbDeviceConnected(string pid, string vid) 
{ 
    using (var searcher = 
    new ManagementObjectSearcher(@"Select * From Win32_USBControllerDevice")) 
    { 
    using (var collection = searcher.Get()) 
    { 
     foreach (var device in collection) 
     { 
     var usbDevice = Convert.ToString(device); 

     if (usbDevice.Contains(pid) && usbDevice.Contains(vid)) 
      return true; 
     } 
    } 
    } 
    return false; 
} 
+0

Не могли бы вы помочь мне с этим вопросом (http://stackoverflow.com/q/7314257/75500)? – Shimmy

3

может быть что-то вроде

//import the System.Management namespace at the top in your "using" statement. Then in a method, or on a button click: 

ManagementObjectCollection collection; 
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE InterfaceType='USB'")) 
    collection = searcher.Get(); 
foreach (ManagementObject currentObject in collection) 
{ 
    ManagementObject theSerialNumberObjectQuery = new ManagementObject("Win32_PhysicalMedia.Tag='" + currentObject["DeviceID"] + "'"); 
    MessageBox.Show(theSerialNumberObjectQuery["SerialNumber"].ToString()); 
} 
collection.Dispose(); 

Использование WMI

+0

У меня нет серийного номера, только идентификатор продавца и идентификатор продукта, который вложен где-то в usb. Также, что вызов WMI ищет Win32_DiskDrives, а не все USB-устройства. – Robert

Смежные вопросы