usb flash bellegin seri numarasını almak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
forumsad
Üye
Mesajlar: 296
Kayıt: 29 Tem 2010 10:47

usb flash bellegin seri numarasını almak

Mesaj gönderen forumsad »

internetde aşağıdaki kodu buldum tam istediğim gibi
ama tüm usb bellekleri değilde benim gönderdiğim örnek E flash belleginin seri numarasını almasını istiyorum
kurcaladım ama beceremedim yardımcı olabilecek var mı acaba
saygılarımla

Kod: Tümünü seç


implementation

{$R *.dfm}

Uses ActiveX, WbemScripting_TLB;

Procedure USBCihazlar( Liste: TStrings );
var
  WMISer        : ISWbemServices;
  USBDiskler    : ISWbemObjectSet;
  Item          : Variant;
  i             : Integer;
  Cihaz, SeriNo : String;
begin
  Liste.Clear;
  WMISer      := CoSWbemLocator.Create.ConnectServer('.', 'root\cimv2','', '', '', '', 0, nil);
  USBDiskler  := WMISer.ExecQuery('Select * From Win32_DiskDrive Where InterfaceType="USB"','WQL', 0, nil);//more info in http://msdn.microsoft.com/en-us/library/aa394132%28VS.85%29.aspx
  for i := 0 to USBDiskler.Count - 1 do
  begin
    Item   := USBDiskler.ItemIndex(i);
    Cihaz  := VarToStr(Item.Model);
    SeriNo := VarToStr(Item.PNPDeviceID);
    while POS('\', SeriNo) > 0
      do System.Delete(SeriNo, 1, Pos('\', SeriNo) );
    if Pos('&', SeriNo) > 0
      then SeriNo := Trim( Copy(SeriNo, 1, Pos('&', SeriNo)-1) );
    Liste.Add(Format('Cihaz %.2d : %s ( s/n: %s )',[i+1, Cihaz, SeriNo]) );
  End;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  USBCihazlar( Memo1.Lines );
   USBCihazlar( 'E' );  //F sürücüsünün seri numarasını al
end;
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: usb flash bellegin seri numarasını almak

Mesaj gönderen csunguray »

forumsad yazdı:kurcaladım ama beceremedim yardımcı olabilecek var mı acaba
Beceremedim derken:

- Kodu derlerken hata mesajı mı alıyorsunuz?
- Programı çalıştırırken bir hata mesajı mı alıyorsunuz?
- Program çalışıyor ama istediğiniz sonucu üretmiyor mu?
- Programı çalıştırdığınızda bilgisayardan duman ve alev mi çıkıyor?

Açıklarsanız daha iyi yardımcı olabiliriz.
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: usb flash bellegin seri numarasını almak

Mesaj gönderen ertank »

Merhaba,

Ekteki dosyada istediğinizi gerçekleştiren kod örneğini bulabilirsiniz. Bu noktada birkaç konuya dikkatinizi çekmek istiyorum.
1- WbemScripting_TLB kullanımı ile ilgili dikkatli olmalısınız. Bulduğunuz örnek Windows Vista ve sonrası için geçerlidir. Eğer uygulamanız Windows XP'de çalıştırılır ise hata verecektir. "USBDiskler.ItemIndex(i);" Vista ve sonrasında gelmiştir. Ekteki örnek kodun bu sorunu yoktur.
2- Bazı antivirüs uygulamaları bazı USB cihazları bloke edebilmektedir. Bu durumda okuyacağınız seri numarası bilgisi karışık ifadeler olarak karşınıza çıkar. Doğru seri numarası bilgisini okuyamazsınız.
3- Sürücü harfi üzerinden bilgiye erişme isteğiniz programcı olarak sizi yanıltabilir. Zira USB sürücü harfleri değişebilmekte/değiştirilebilmektedir. Dolayısı ile yanlış bir USB cihaz bilgisi okuyabilir veya hiç bilgi alamayabilirsiniz.

Kaynaklar:
https://theroadtodelphi.com/2010/11/28/ ... g-library/
http://stackoverflow.com/questions/3718 ... ory-sticks
Dosya ekleri
usb.rar
(70.27 KiB) 82 kere indirildi
Kullanıcı avatarı
kimimben
Üye
Mesajlar: 129
Kayıt: 28 Oca 2016 04:41
Konum: İstanbul

Re: usb flash bellegin seri numarasını almak

Mesaj gönderen kimimben »

forumsad yazdı: procedure TForm1.BitBtn1Click(Sender: TObject);
begin
USBCihazlar( Memo1.Lines );
USBCihazlar( 'E' ); //F sürücüsünün seri numarasını al
end;
[/code]
Sorunun cevabına gelmeden önce;
USBCihazlar methodunun parametresi, TStrings tipinde bilgi isterken neden string olarak 'E' göndermeye çalıştığınızı merak ettim.
forumsad
Üye
Mesajlar: 296
Kayıt: 29 Tem 2010 10:47

Re: usb flash bellegin seri numarasını almak

Mesaj gönderen forumsad »

teşekkürler arkadaşlar

programım usb bellek takılıysa çalışıyor yoksa çalışmıyor (seri numarasını karşılaştırıyor)
saygılarımla
Cevapla