Usb Disk Gerçek seri no

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Usb Disk Gerçek seri no

Mesaj gönderen true_false »

Merhaba şu aralar başlıktaki konu ile ilgilenmekteyim. volumeno her format sonrası değişiyor nette usbdeview diye bir program var (http://www.snapfiles.com/get/usbdeview.html)
bu program usb diskin gerçek seri numarasını gösterebiliyor. daha önce bu konuda işlem yapmış arkadaşların bilgisine ihtiyacım var. iyi çalışmalar.
type
Tform1 = class(Tform)
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Usb Disk Gerçek seri no

Mesaj gönderen SimaWB »

WMI (Windows Management Instrumentation) ile bu istediğini yapabilirsin.
Burada örnek var.
There's no place like 127.0.0.1
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Usb Disk Gerçek seri no

Mesaj gönderen mrmarman »

Örneği sadeleştilerim istersen :

Örnek Proje için
USB SeriNumarasi.rar
USB Seri Numarası Görüntüleme
(192.01 KiB) 1596 kere indirildi
dosyasını indirebilirsiniz.
WbemScripting_TLB dosyasını oluşturmak için Import Type Library ile "Microsoft WMI Scripting V1.2 Library" seçmeniz yeterli. Verdiğim linkte bu dosya hali hazırda mevcut.

Resim

Kod: Tümünü seç

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);
  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;
Kullanımı :

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  USBCihazlar( Memo1.Lines );
end;
Resim
Resim ....Resim
Kullanıcı avatarı
lazymule
Üye
Mesajlar: 127
Kayıt: 16 Eki 2006 04:03
İletişim:

Re: Usb Disk Gerçek seri no

Mesaj gönderen lazymule »

Evrende Ulaşılamayacak Tepe Yoktur !!!!
Yeterki İnsan Ulaşmak İstesin !!!!
http://www.maxiteknik.com
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Re: Usb Disk Gerçek seri no

Mesaj gönderen true_false »

cevaplarınız için teşekkürler @mrmarman özel teşekkür.
type
Tform1 = class(Tform)
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Re: Usb Disk Gerçek seri no

Mesaj gönderen true_false »

mrmarman yazdı:

Kod: Tümünü seç


  USBDiskler  := WMISer.ExecQuery('Select * From Win32_DiskDrive Where InterfaceType="USB"','WQL', 0, nil);

yukarıdaki sorguda windows XP 'de hata alınıyor Win32_DiskDrive bu kütüphadeki bütün alanlar xp'de yok onun için sadece işimize yarayanları alırsak daha iyi olacaktır.
ben Xp için aşağıdaki değişikliği yaptım bir sorun çıkmadı.

Kod: Tümünü seç

  USBDiskler  := WMISer.ExecQuery('Select pnpdeviceid,interfacetype From Win32_DiskDrive Where InterfaceType="USB"','WQL', 0, nil);
type
Tform1 = class(Tform)
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Usb Disk Gerçek seri no

Mesaj gönderen greenegitim »

XP kullanıyorum değiştirdiğim halde aşağıdaki hatayı alıyorum
acces violation
En son greenegitim tarafından 16 Ağu 2011 10:06 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Mücadele güzelleştirir!
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Re: Usb Disk Gerçek seri no

Mesaj gönderen true_false »

@greenegitim aldığınız hata sanırım başka birşeyden kaynaklı eğer doğru kodları yazıp xp de çalıştırmayı denediğinizde EOleexception hatası alırsınız Access violation değil.
type
Tform1 = class(Tform)
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Usb Disk Gerçek seri no

Mesaj gönderen greenegitim »

başka bilgisayarlardada denedim XP üzerinde bir türlü çalıştıramadım Win7 de sorunsuz çalışıyor ama. :(
Mücadele güzelleştirir!
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Usb Disk Gerçek seri no

Mesaj gönderen orhancc »

Bedava eklenti var kullanırsan.
http://neftali.clubdelphi.com/?p=586
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Usb Disk Gerçek seri no

Mesaj gönderen greenegitim »

@mrmarman nın yaptığı Windows 7 de işimi görüyor ama xp bilgisayarlarda hata veriyor @mrmarman yaptığı şekilde xp de çalıştırabilen varmı?
Mücadele güzelleştirir!
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Re: Usb Disk Gerçek seri no

Mesaj gönderen true_false »

bende @mrmarman yazdığı kodu yaptım xp'de hata aldım sonra bir önceki mesajımda yazdığım değişikliği uyguladım şuan sorunsuz çalışıyor. kodlarını birkezdaha gözden geçir.
type
Tform1 = class(Tform)
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Re: Usb Disk Gerçek seri no

Mesaj gönderen true_false »

yazdığım deneme uygulamasına göz atabilirsin.
Dosya ekleri
usbdt.rar
usb
(5.9 KiB) 375 kere indirildi
type
Tform1 = class(Tform)
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Usb Disk Gerçek seri no

Mesaj gönderen greenegitim »

@true_false file not found unit1.dcu hatası veriyor bendemi bir eksiklik var bide bunu xp de çalıştırdım diyelim ama exe yi yeri geldiğinde windows 7, vista, xp kullanmam gerekecek onu nasıl yapacağım?
Mücadele güzelleştirir!
true_false
Üye
Mesajlar: 401
Kayıt: 22 Tem 2004 02:03
Konum: sıkıntı çekmişlere yakın bi yerden

Re: Usb Disk Gerçek seri no

Mesaj gönderen true_false »

önclikle UnUSBGet unitini bir inceleyin burada sadece GetUsbDriveSerial fonksiyonunu kullanacaksınız kullanımı unit1de var edite flash diskin takılı olduğu driver adını girmeniz yeterli
gelelim sorduğunuz soruya

Kod: Tümünü seç

Select * From Win32_DiskDrive Where InterfaceType="USB"','WQL', 0, nil
bu sorguda Win32_DiskDrive bu kütüphanenin bütün alanlarını çekiyoruz win 7'de bir hata yok (vistada aynı durum) bu kütüphanede birçok alan var misal deviceid bu alanı xp'de çekmek istediğimizde hata alıyoruz ama 7'de sorun yok.
eğer siz programınızda deviceid ile ilgili bir kod yazacaksanız xp'de farklı bir çözüm üretmeniz gerekecek.

konuyu fazla uzatıp kafa karıştırmayalım. eğer sadece flash belleğin serinumarasını almak istiyorsanız ihtiyacınız olan alan pnpdeviceid bu alanı win7,xp,vista destekliyor
sorgunuzu

Kod: Tümünü seç

Select pnpdeviceid  From Win32_DiskDrive Where InterfaceType="USB"','WQL', 0, nil
olarak değiştirirseniz win7,xp,vista da sorun yaşamazsınız.
Win32_DiskDrive kütüphanesi hakkında bilgi almak ve bütün alanlarını merak ediyorsanız ilk mesajımdaki programı inceleyebilirsiniz.
(http://www.snapfiles.com/get/usbdeview.html)
umarım açıklayıcı olmuşdur.
kolay gelsin.
type
Tform1 = class(Tform)
Cevapla