الذي أبحث عنه هو استخراج الرقم الفيزيائي (الثابت) وليس المنطقي (المتغير) وقد قدم لي أحدهم الطريقة لذلك عن طريق Script VBS والكود هو التالي:
كود :
On Error Resume Next
MyComputer = "."
Set obj = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & MyComputer & "\root\cimv2")
Set columns = obj.ExecQuery("Select * from Win32_DiskDrive where caption like '%USB%'")
For Each item in columns
Wscript.Echo "Caption: " & Item.Caption
Wscript.Echo "Signature: " & Item.signature
Next
طريقة الاستخدام: أكتب الكود في ملف TXT واحفظه بامتداد VBS وقم بتشغيله (لا تشخى شيئا لا علاقة لهذا بالفايروسات حتى وإن قال ذلك بعض المضادات الحساسة )
السؤال:
كيف السبيل الى استغلال هذا Sript في الدلفي واستخراج القيمة Item.signature (السطر الأخير للسكريبت) ؟
شكرا كثيرا.
05-06-2009, 05:47 PM (آخر تعديل لهذه المشاركة: 21-05-2011, 05:19 PM بواسطة kachwahed.)
بارك الله فيك أخي me&delphi
وآسف أني تعبتك معي...
في الحقيقة هناك مكونات عديدة للقيام بذلك، منها مكون من Microsoft اسمه VBScript Conctrol
أفضل استعمال وحدة (Unit) أو مكتبة (DLL) مثل: Delphi Wrapper for the Microsoft VBScript 5.5 RegExp Library
لم أجربها بعد ...
والذي أحاول أن أصل إليه هو استغلال القيمة Item.signature وتخزينها في متغير String لاستعمالها لاحقا.
شكرا كثيرا me&delphi
السلام عليكم،
أخي MjIrIm لقد اطلعت على الوحدة VWIN32.PAS والدالة GetMediaIdentifier (وليست SetMediaIdentifier) لكنها لا تعيد الرقم الفيزيائي للقرص، وهذا مثال مع الكود سورس والملف النتفيذي: https://www.planet-source-code.com/vb/sc...FR13626032
شكرا كثيرا أخي MjIrIm سأبحث أكثر وأوافيك بالجديد.
استدعاء VBS ليس طريقة جيدة فقد تثير بعض مضادات الفيروسات وبرامج الحماية
ايضا ما يقوم به Script يمكن القيام به بدلفي بطريقة اخرى
وحسب ما فهمت الهدف ليس تنفيذ VBS بقدر ما هو الحصول على رقم تسلسلي للFlash Disk
استخدم مكونات MiTeC System Informationموقعها mitec.cz
والسلام عليكم
بار ك الله فيك أستاذ، جزاك الله كل خير
... فعلا ليس الهدف تفيذ VBS بقدر ما هو الحصول على الرقم التسلسلي، لكني جربت مكونات MiTeC System Information Component Suite ومكونات أخرى عديدة من هذا النوع وكلها لم لم تف بالغرض، سألت أحد الخبراء فدلني على هذا السكريبت، وسألت Marco Cantu فأجابني:
إقتباس :> 1- Is there any way to get the the Physic Serial Number for USB Disk in
> Delphi ???
I guess there is probably a Windows APi or registry lookup for that,
but I have no information.
> 2- Who can i use above VBScript and retrive the value of "Item.signature" to
> store it in varibale String ?
That code is hard to read for me... I think it uses an external component.
--
----
Marco Cantù, author Delphi 2009 Handbook
سأبحث عن دالة API هذه التي تحدث عنها، إبحثوا معي لنستفيد جميعا