السلام عليكم و رحمة الله تعالى و بركاته...
شكرا لك أخي محمد علاء على مرورك و تفاعلك...
أبسط طريقة لضغط محتوى مجلد إلى ملف ZIP؟
منذ إصدارة ME, أصبح بمقدور ويندوز التعامل مع ملفات ZIP و كأنها مجلدات شبه عادية. في هذه التلميحة سنستعمل خدعة بسيطة لتسهيل ضغط محتوى مجلد نحو ملف من نوع ZIP. الخدعة تتمحور في إنشاء ملف جديد و كتابة رأس ملف ZIP فيه. رأس ملف ZIP مكون من 21 بايت. أول و ثاني بايت تكون توقيع ملفات ZIP الذي هو PK. ثالث و رابع بايت تكون معرفا بأن الملف المضغوط هو مجلد و تأخذ القيمتين 5 و 6.
أولا نقوم بإنشاء ملف ZIP فارغ :
' إنشاء و كتابة ملف زيب فارغ
Dim B(21) As Byte
B(0) = 80 : B(1) = 75 : B(2) = 5 : B(3) = 6
IO.File.WriteAllBytes("file.zip", B)ثانيا و أخيرا, نقوم بطلب نسخ المجلد و محتواه نحو ملف ZIP الذي قمنا بإنشائه للتو :
' نقل الملفات إلى ملف زيب الفارغ
Dim sh As New Shell32.Shell
Dim sf As Shell32.Folder = sh.NameSpace("path") ' مسار المجلد المراد ضغطه
Dim df As Shell32.Folder = sh.NameSpace("file.zip") ' اسم و مسار ملف زيب الذي سيستقبل محتوى المجلد
' إبتداءا من إصدارة ME أصبح بمقدور ويندوز التعامل مع ملفات زيب و كأنها مجلدات "تقريبا" عادية
sf.CopyHere(df)قبل الإنتهاء و جب الإعلام بضرورة استعمال إجراءات Shell في عملية نسخ المعلومات إلى ملف ZIP لتتم العملية كما يجب. في الكود أعلاه استعملنا مكتبة Microsoft Shell Controls And Automation التي نحتاج إلى زيادة Reference لها على المشروع و ذلك بفتح نافذة تكوين و تهيئة المشروع باختيار Project من القائمة الرئيسية ثم Properties لاسم المشروع و عند ظهور النافذة نختار صفحة References ثم نضغط على الزر Add.
تحياتي...
تم تعديل هذه المشاركة بواسطة محمد رضى في 15 أكتوبر 2009 في 15:29

