delphi4arab منتديات دلفي للعرب
استخراج الرقم التسلسلي لـ usb - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : استخراج الرقم التسلسلي لـ usb (/showthread.php?tid=759)



استخراج الرقم التسلسلي لـ usb - kachwahed - 02-04-2009

أبحث عن طريقة لاستخراج الرقم التسلسلي الحقيقي Physical (وليس Logic) لـ USB.


استخراج الرقم التسلسلي لـ usb - MjIrIm - 04-04-2009

kachwahed كتب :أبحث عن طريقة لاستخراج الرقم التسلسلي الحقيقي Physical (وليس Logic) لـ USB.

في البداية السلام عليكم


أخي العزيز kachwahed
أرفقت لك تطبيق خفيف جدا لي منذ فترة
مع نسخة لدلفي 2007, يعمل ايضا على النسخة السابعة
باذن الله تجد فيه مبتغاك

ملاحظة: يجب عليك تعديل داخل الوحدة على الرقم المنطقي الذي يعطيه النظام
حتى تتمكن من الحصول على الرقم التسلسلي المطلوب

اذا أردت تحسينه أو استغلاله لك الحرية
و السلام.




استخراج الرقم التسلسلي لـ usb - kachwahed - 04-04-2009

بوركت أخي، الله يجزيك كل خير
أحسن الله إليك وبارك الله فيك
لحد الآن هناك متغير غير معرف (استعمال دلفي 7):
PHP كود :
[Error] HDSNE.dpr(11): Undeclared identifier: 'MainFormOnTaskbar' 
أعتقد أن هذا المثال يعيد الرقم التسلسلي Physical وليس Logic، باستعمال الدالة GetVolumeInformation، كانت لدي دالة مشابهة:
PHP كود :
function DriveGetInfoKey( const _drive , _key: string ): string;
var
  
f_Label , f_FileSystemName: string;
  
f_LongName , f_FileSystemFlags: DWORD;
  
pf_Serial: PDWORD;
  
f_Serial: integer;
begin
  Result
:= '';
  if 
_drive = '' then Exit;

  
Setlength( f_Label , 255 );
  
Setlength( f_FileSystemName , 255 );
  
GetMem( pf_Serial , 255 );
  
GetVolumeInformation( PChar( _drive + '\' ) , PChar( f_Label ) , 255 ,
    pf_Serial ,
    f_LongName , f_FileSystemFlags , PChar( f_FileSystemName ) , 255 );
  f_Serial:= pf_Serial^;
  FreeMem( pf_Serial , 255 );

  if _key = '
DLABEL' then Result:= string( PChar( f_Label ) )
  else if _key = '
DSERIAL' then
    Result:= Copy( inttohex( f_Serial , 8 ) , 1 , 4 ) + '
-' +
      Copy( inttohex( f_Serial , 8 ) , Length( inttohex( f_Serial , 8 ) )
      - 3 , 4 )
  else if _key = '
DLONGNAME' then begin
    if f_LongName = 255 then
      Result:= '
255'
    else
      Result:= '
0';
  end
  else if _key = '
DSYSTEM' then
    Result:= string( PChar( f_FileSystemName ) )
end; 
شكرا على كل حال.