2010-09-10 16 views
5

मैं एक ऐसा फ़ंक्शन बनाने की कोशिश कर रहा हूं जो पता लगाता है कि कोई यूएसबी डिवाइस डिवाइस पिड और vid के साथ कनेक्ट है या नहीं। मुझे आशा है कि यह ऐसा कुछ दिखाई देगा, मुझे यकीन नहीं है कि यह सी # में कैसे करें।यूएसबी डिवाइस कनेक्ट

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

मेरे पास एक सीरियल नंबर नहीं है, केवल विक्रेता आईडी और उत्पाद आईडी जो यूएसबी में कहीं भी घोंसला है। इसके अलावा डब्लूएमआई कॉल Win32_DiskDrives की तलाश में है, सभी यूएसबी डिवाइस नहीं। – Robert

संबंधित मुद्दे