19-10-12, 10:29 AM
(آخر تعديل لهذه المشاركة : 19-10-12, 10:33 AM {2} بواسطة Nŏ Coммεητ.)
السلام عليكم ورحمة الله وبركاته
من المنتدى القديماعداد : الأخ رغيد الطيب .
عنوان الموضوع : عمل امتداد ملفات خاص بك .
نحتاج في كثير من الاحيان الى جعل برامجنا تتعامل مع نوع معين من الملفات كما هو الحال مع معظم البرامج المتخصصة فمثلاً الورد يفتح ملفات النوع Doc و الرسام ملفات bmp وهكذا ....
وما نسعى اليه هنا هو كيفية انشاء نوع خاص ببرامجنا وسوف نناقش معاً آلية العمل الذي يقوم به نظام التشغيل لفتح ملف بواسطة برنامج معين ثم سوف اقدم بعد ذلك اجراء بسيط يقوم باضافة نوع جديد من الملفات الى نظام بحيث لايتجاوز الامر سطراً واحداً في برنامجك !! ....
اولاً كوننا مبرمجون يجعلنا لا نكتفي بمعرفة الكود اللازم لتسجيل نوع جديد (وهو موجود بكثرة في منتدانا) ولكن يتوجب علينا فهم طبيعة ما يحدث عندما يقوم المستخدم بالنقر المزدوج على احد الملفات الى ان يتم فتح الملف بواسطة البرنامج المحدد والطريقة في الواقع بسيطة حيث انك اذا نقرت على احد ملفات الورد (ذات الامتداد doc) فانه اولاً يقوم نظام التشغيل بالبحث في الريجيستري عن لاحقة الملف الذي ثم النقر عليه ويكون البحث منصباً على المفتاح الاساسي HKEY_CLSSSES_ROOT وذلك بالبحث عن مفتاح يكون اسمه "doc." ...... واذا لم يجد هذا المفتاح فانه مباشرة يعرض مربع الحوار (فتح بواسطة) .... اما اذا وجد المفتاح فانه ينظر في القيمة التي داخله واذا كان برنامج الورد الذي تستخدمه هو من النوع xp كما في حالتي انا فسوف يجد ان قميته هي "Word.Document.8" والتي تعني ان بيانات الملف الذي يفتح هذا النوع من الملفات doc موجودة في المفتاح Word.Document.8 فيقوم نظام التشغيل بالبحث عن هذا المفتاح كي يتعرف على البرنامج الذي يجب ان يشغله لفتح هذا النوع من الملفات وعندما يجده يبدء بقرائة البيانات من داخله واليك بعض التفصيل فيما يجب ان يحتويه هذا المفتاح ....
ان افضل طريقة لفهم ما يتم شرحه هنا ان تقوم بفتح الريجيستري وتتبع الخطوات التي اوضحها هنا فمثلاً ابحث عن المفتاح .doc وسوف تجد بمجرد ان تختارة انه يعرض لك في القئمة اليمنى من الريجيستري اسم المفتاح الذي يجب ان تبحث فيه وهو في مثالنا Word.Document.8 ثم قم بالنقر على هذا المفتاح ماذا ستجد ؟ ... سوف تجد مباشرة في يمين الشاشة في القيمة المسماه (Defalut) او القيمة الافتراضية عبارة كهذة "مستند Microsoft Word" وهذة العبارة هي التي تظهر عندما تقوم بالنقر على اي ملف ثم اختيار خصائص فانه سوف يتم عرض نوع الملف وبجواره هذا التعليق والذي يفيد بان نوع هذا الملف هو ملف ورد وكذلك الحال بالنسبة لاي نوع آخر من الملفات كملفات الرسام تجد ان نوعها يوجد به تعليق مثل "صورة نقطية" وبهذا نكون قد عرفنا اين يمكن وضع تعليق على نوع ملفاتك الجديد ويمكنك جعلها مثلاً "برنامج فلان للتحرير النصوص" ....
طبعاً هذا فقط عبارة نوع الملف ولكن يوجد الكثير داخل المفتاح Word.Document.8 قم الان بالنقر على علامة الجمع الموجودة بجواره لتمديده ورؤية المفاتيح التي بداخله سوف تجد مفاتيح عدة والتي تهمنا منها اتنان هما المفتاح Default Icon و المفتاح Shell ...
المفتاح Default Icon :
يحتوي على مسار الملف الذي يملك ايقونة برنامجك بحيث تصبح مفاتك لها ايقونة خاصة وهذا مهم جداً فمثلاً ترى ان ملفات الصوت لها يونة خاصة بينما ملفات قواعد بيانات الاكسس لها ايقونة مميزة لها وبذى يسهل تمييز الملفات من ايقوناتها مباشرة ... وملف الايقونة يمكن ان يكون احد ثلاثة انواع اما ملف Ico عادي وتجد الكثير منها مع برنامج الفيجوال في المجلد Graphics ثم Icons .... ويمكن ان تكون ملف DLL حيث ان هذة الملفات يمكن ان تحتوي على اكثر من ايقونة واحدة ويتم تحديد الايقونة التي نريدها عن طريق الرقم مثلاً :
PHP كود :
C:\Windows\System32\Shell32.dll,3
ويعني السطر السابق ان ايونةالبرنامج موجودة في الملف Shell32.dll في الموقع الرابع لان الترقيم يبدء من الصفر ...
واما الطريقة الثالثة للتحديد ايقونة وهي التي سوف نستخدمها هنا هي مسار ملفك التنفيدي فاذا كان برنامجك هو Test.exe فان القيمة سوف تكون عنوان ملفك التنفيدي والايقونة التي سوف تظهر هي الايقونة الاولى في ملف المصادر Resoures داخل برنامجك او ايقونة الفورم الاولى في البرنامج .....
هذا كان لتحديد ايقونة لمفاتك اما الان سوف نستعرض محتويات المفتاح Shell وهي الاهم ..
نلاحظ جميعاً اننا اذا نقرنا على اي ملف بالزر الايمن فان تظهر قائمة تحتوي على اوامر ثابثة في كل الملفات وهي في الجزء الاسفل كالامر حذف و اعادة تسمية وخصائص و ... و .... و .... بينما القسم الاعلى نجد فيه اوامر تختلف من ملف الى آخر مثلاً نجد في ملفات الرسام الامر فتح و عرض وطباعة بينما نجد في ملفات الصوت wav امر جديد مثل تسجيل و تشغيل وهناك اشياء ثابتة ايضاً .... وكل ذلك موجود في القسم shell حيث انك اذا فتحته تجد مفاتيح اخرى مثل :
open وقميتة "فتح"
Print وقيمته "طباعة"
وغيرها اي ان الاسم Open هو اسمة في الريجيستري اما الاسم فتح فهو الذي سوف يظهر في القائمة اليمنى يعني كتجربة بسيطة غير الكلمة فتح الى العبارة "سبحان الذي هدانا لهذا" ثم اذهب الى اي ملف ورد في جهازك وانقر بالزر الايمن وسوف ترى ان الامر فتح اختفى واصبح مكانه العبارة التي كتبناها واذا نقرت عليها يتم فتح الورد كما كان الامر سابقاً اي ان الذي غيرناه هو الاسم فقط وانما العمل ظل كما كان سابقاً ... (قم الان باعادة الوضع كما كان سابقاً واعيد الكلمة فتح) ...
لاحظ الان ان داخل كل مفتاح من المفاتيح المحتواه داخل Shell يوجد بها مفتاح باسم Command اي انه داخل المفتاح Open يوجد مفتاح command وكذلك الحال داخل المفتاح Print يوجد ايضا command ووظيفة هذا المفتاح ان يحتوي على القيمة التي تدل على البرنامج الذي نريد تشغيله اي انه ماذا نريد ان يحصل اذا نقرنا على الامر فتح .... مباشرة يتم تشغيل البرنامج الموجود داخل الـ Command التابع للمفتاح Open .... واذا نظرنا في قمية الكوماند التابع للفتاح open في مثالنا (برنامج الورد) فاننا سوف نجد فيه مسار برنامج الورد متبوعاً بالعلامة %1 وهي علامة مهمة جداً واذا حذفتها فان الملف لن يعمل ....
طبعاً كل ماسبق هو لمعرفة اين يتم التخزين واذا وجدت اي صعوبة في شرح الامر يمكنك الاعماد على الريجستري وتجربة النتائج التي تحصل وانصح بالتجربة على ملفات txt واذا حصل اي خطأ ولم تتمكن بعده من فتح الملفات النصية بالشكل السليم عندها قم بالضغط على الزر shift اثناء الضغط على الزر الايمن للماوس فوق احد الملفات النصية وسوف تظهر لك القائمة المعهودة ولكن باضافة الامر فتح بواسطة اخترة ثم اختار بنامج المفكرة notepad وحدد الخيار الذي يجعل المفكرة هي التي تفتح الملفات النصية txt دائماً ....
واكرر انك اذا لم تكن واثقاً مما تفعل انصح بتجاهل الجزء السابق لاننا سوف نقوم بكل ماسبق برمجياً دون الحاجة الى فتح الريجستري وقد كان ذلك للفائدة فقط ...
الان سوف نتعرف على الاجراء الذي سوف يقوم بتسجيل نوع الملفات الجديد في النظام ... والامر الذي سوف نتسخدمه هو NewFileType وهذا الامر يحتوي على ثلاثة بارميترات فقط وهي كالتالي :
coderogramPath اسم برنامجك ومساره
Extension الامتداد
Description وصف النوع الجديد
يتبع في الجزء الثاني ...
متغيب