Kendimce geliştirdiğim bir yöntem.İnternette usb aygıtların sadece sayısını değil isimlerini falan listeleyen yordamlar,kodlar var fakat bunlar çok uzun kod blokları ve akılda kalması imkansız.Zaten bunu yazanların da tüm bu kod bloklarını ezbere bildikleri sanmam zaten bilinmesine de ihtiyaç yok.
Gelelim bu işlemi nasıl yaptığımıza.System.Management sınıfından yararlanacağız.
Using System.Management;
yazdıktan sonra Solution Explorer penceresinden Projemizin isminin üzerine sağ tıklayıp Add Reference diyerek .NET sekmesinden System.Management sınıfını ekliyoruz ve projemize bu sınıfı dahil etmiş oluyoruz.Şimdi kod yazmaya başlayabiliriz;
public int usbbul()
{
int sayac = 0;
ArrayList usbler = new ArrayList();
ManagementObjectSearcher usb= new ManagementObjectSearcher("SELECT * FROM Win32_UsbHub");
foreach (ManagementObject x in usb.Get())
{
usbler.Add(x["Description"].ToString());
}
foreach (string a in usbler)
{
listBox1.Items.Add(a.ToString());
if (a != "USB Kök Hub")
{
sayac++;
}
}
return xx;
}
Bir ArrayList oluşturduk ve usb aygıtları listelemek için usb aygıtların isimlerini daha doğrusu aygıtlarn türünü bu ArrayList ten çektik.Türünü diyorum çünkü Win32_UsbHub sınıfı ile aygıtların sadece depolama aygıtı , Usb Bileşik Aygıt veya USB Kök Hub yani boş olup olmadığını görüntüleyebiliyoruz.Win32_UsbHub sınıfına ait propertyleri görüntüleyebilmek için ManagementObjectSearcher nesnesi ile bir sorgu oluşturduk.(ManagementObjectSearcher usb= new ManagementObjectSearcher("SELECT * FROM Win32_UsbHub");)
Daha sonra bir foreach dönügüsü oluşturduk ve bu döngü içersinde bir ManagementObject oluşturup ManagementObjectSearcher ile oluşturduğumuz sorgunun çıktılarını bu ManagementObject nesnesine aktardık.Döngü içersinde daha önce oluşturduğumuz ArrayList'e ManagementObject nesnesinin değerlerini Add metodu ile ekledik.Böylece bilgisyardaki tüm usb aygıtlar bir arraylistte toplanmış oldu.Fakat boş olan usb sürücülerde bu listeye eklendi.Öyleyse boş sürücülerle bir aygıt takılı olan usb sürücüleri ayırt etmemiz gerekiyor.Bunu da 2. foreach döngüsü oluşturarak yaptık.ArrayListteki değerleri döngü sayesinde bir string değişkene atayarak if yapısı ile string değişkenin USB Kök Hub yani boş sürücü olup olmadığını kontrol ettirdik.Eğer boş değil ise sayacı 1 arttırdık ve döngü içersinde boş olmayan her aygıt için sayaç bir artınca döngüden çıkıldığında sayac değişkeninin üzerinde taşıdığı değer bilgisayarımız üzerindeki us aygıt sayısına eşit oldu..
0 yorum:
Yorum Gönder
Yorumlarınız için teşekkürler..Eleştirel değilde daha çok yapıcı olursanız mutlu olurum :)