delphi4arab منتديات دلفي للعرب

نسخة كاملة : استغلال cfgmgr32.dll وsetupapi.dll لتجهيز وتسيير وسائط النظام
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله

cfgmgr32.dll ، setupapi.dll هما مكتبتان للدوال المتعلقة بأجهزة النظام (توجدان في System32)، يجمع هذان الملفان مجموعة هامة الدوال المتعلقة بتثبيت وتسيير أجهزة النظام، وبواسطتهما يمكن الوصول إلى عدة وسائط على غرار COM Ports، DeviceManager، USBDrive...

طالع المزيد حول المكتبتين من MSDN
SetupAPI
cfgmgr32

من أجل استغلال هذه الدوال قام بعض المبرمجين بإنشاء وحدات لاستدعائها من الدلفي، هناك مكون (منفرد) لمكتبة المكونات Jedi يقوم باستغلال هذه مجموعة من هذه الدوال، تجدونه من هنا.
لكن المكون يتطلب تثبيت المكتبة بكاملها لأجل بعض الثوابت والأنماط، لذلك قمت باستخراج هذه الوحدات وإضافة ما ينقصها حتى تصبح سهلة للاستعمال، تجدونها المرفقات Units.
انطلاقا من هذه الوحدات قمت بتعديلات عليها وأعددت مثال صغير حول طريقة الاستخدام، بريمج يعرض جميع الأقراص السريعة الموصلة بالحاسب مع الرقم التسلسلي الفيزيائي Big Grin، مع زر يمكنك من سحب القرص في وضع آمن USB Drive Safe Removal، في المرفقات ملف تنفيذي ومصدره.
ملاحظة: بعض المبرمجين يستعمل الرقم الفيزائي للقرص السريع لتوزيع برنامجه (نسخة لكل قرص).
[صورة: xkod3n.jpg]
السلام عليكم و رحمة الله
بارك الله فيك اخي كاش واحد Smile

بعض الملاحظات :
- الأداة تظهر حرف A الخاص بــ Floppy في الأجهزة التي تحتوي على قارئ الأقراص المرنة.
- عند تشغيل الأداة قبل ربط الــ Flash Memory لا يتم الفحص.

الاقتراحات :
- استعمال Timer و الأفضل Thread يقوم بالفحص الدوري و ارسال النتائج.


إقتباس :تجدونها المرفقات Units
ارفقت ملفات includes التي تعمل مع الوحدات دون الحاجة الى تثبيت مكونات JEDI

بالتوفيق ان شاء الله
وفيكم بارك الله إخوتي جميعا
وعليكم السلام ورحمة الله وبركاته أخي STRELiTZIA
إقتباس :- الأداة تظهر حرف A الخاص بــ Floppy في الأجهزة التي تحتوي على قارئ الأقراص المرنة.
معك حق، لأنه يضاف كقيمة ثابتة، كان في يجدر بي أن أحذفه.

إقتباس :- عند تشغيل الأداة قبل ربط الــ Flash Memory لا يتم الفحص.
لأن الفحص يتم بشكل غير ديناميكي، استعمال Thread يقوم بالمراقبة فكرة رائعة...
هناك حدث Windows مخصص لذلك:
PHP كود :
procedure WMDeviceChange(var MsgTWMDeviceChange); message WM_DEVICECHANGE
برأيي، استعماله أولى من Thread، إني بصدد تحضيره.
إقتباس :ارفقت ملفات includes التي تعمل مع الوحدات دون الحاجة الى تثبيت مكونات JEDI
لقد حذفت Includes من الوحدات عمدا:
PHP كود :
{/$I jediapilib.inc
هل تجب إضافتها حتى نستتخدم Units، أظنها تحتوي على فحوصات غير ضرورية:
PHP كود :
{$DEFINE WINXP

سأوافيكم بالجديد إن شاء الله.
التحديث في المرفقات: إضافة الحدث WM_DEVICECHANGE لفحص إدخال أو سحب قرص USBDrive، بارك الله فيك أخي STRELiTZIA.
إقتباس :سأوافيكم بالجديد إن شاء الله.
الآن ما شاء الله اصبح كامل متكامل Smile

الاقتراحات المملة: Big GrinBig GrinBig Grin
في هذه المرحلة يجب تطويره الى مكون Component سيكون رائع...
مع اضافة خاصية Enabled و احداث مهمة مثل : OnUSBDeviceConnect و OnUSBDeviceDisconnect

بالتوفيق ان شاء الله
السلام عليكم
معذرة على التأخير...
إقتباس :في هذه المرحلة يجب تطويره الى مكون Component سيكون رائع...
المكون جاهز، مفتوح المصدر (Unit) لمن أراد تطويره Big Grin، يعمل على D7 حتى D2009
اكتفيت بحدث OnDeviceChange وبعض الخصائص مثل Enabled والإجراءات...
البقية وطريقة الاستعمال في المثال...
والمثال مع المكون في المرفقات Wink
بالتوفيق.
بارك الله فيك اخي kachwahed لا اعرف كيف اشكرك علي هذا المكون الرائع.
لكن جربت المثال علي نسخة Windows Seven ولكن لا يعمل حيث لا يقوم بعمل Safe Remove لل USB
إقتباس :لكن جربت المثال علي نسخة Windows Seven ولكن لا يعمل حيث لا يقوم بعمل Safe Remove لل USB
مؤكد... لأنه يستخدم دوال API وملفات النظام الخاصة بالـ XP، الآن يجب تحديثها لتتوافق مع Win7، لم أثبت Win7 بعد، لك أن تستكشف وتقوم بالمغامرة Wink.
الأمر الغريب ان المكتبات موجودة في Windows 7 في ال system32 لذلك من المفترض ان يعمل !
كنت اعتقد ان المشكلة مشكلة صلاحيات Privilege لذلك جربت استخدام الكود هكذا:
كود :
SetPrivilege('SeUndockPrivilege', true);
        CM_Request_Device_Eject(DEVINST(USBDrives.Objects[Drive]),@VetoType, nil, 0, 0);
        SetPrivilege('SeUndockPrivilege', False);
لكن لم يحدث اي تغيير.
-
علي اي حال سأبحث في هذا الامر واذا توصلت لشئ سأضع النسخة المتوافقة مع Win7 هنا ان شاء الله.
مشكور يااخي يعمل 100/100 على دالفي 5 بنضام ويندوز sp3 مع العلم يجب تنصيب المكونات
الصفحات : 1 2