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;