![]() |
|
[مقال] كيف تعرض Thumbnail للملفات - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175) +--- قسم : قسم مقالات C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=177) +--- الموضوع : [مقال] كيف تعرض Thumbnail للملفات (/showthread.php?tid=819) الصفحات:
1
2
|
كيف تعرض Thumbnail للملفات - الشاكي لله - 02-11-13 السلام عليكم ورحمة الله وبركاته
Thumbnail او الصور الرمزية هي صور تشير الى محتوى الملف لنأخذ بالمثال الكتب الاكترونية ذات الامتداد (PDF.) كما ترى الملف dotNet 2008 يوجد لديه Thumbnail وهو يشير الى غلاف الكتاب . -- -- -- طيب لو انا سويت امتداد جديد (مثلا cfg) ، وسويت ملف بهذا الامتداد كيف سيعرض هذا الملف !!! لو انا حبيت احط صورة رمزية Thumbnail يعبر عن محتوى هذا الملف كما حصل في الملف dotNet 2008 .. كيف سأقوم بذلك ؟؟ -- -- -- هناك مكتبة تدعى SharpShell وهي مكتبة متخصصة في هذا الموضوع سنكتب بواسطتها كود يقوم باستخراج صورة من الملف نفسه (الذي بالامتداد cfg) كما في dotNet 2008 حيث ان الوندوز قام باخذ اول صفحة من الكتاب وجعلها Thumbnail له . اذن الThumbnail يتم سحبه من الملف نفسه . فيجب عليك البحث عن طريقة لحفظ الصورة في الملف .. مثلا اخونا سجاد في شرحه لxml حيث انه استعمل طريقة لحفظ صورة في ملف xml .. فيمكننا مثلا ان نقوم بعمل Thumbnail للملف xml من خلال بيانات الصورة الموجودة داخله . في هذا المقال .. راح نسوي ملف نصي ونضع في اول سطر رابط لصورة موجودة على الانترنت ونحفظ الملف كالامتداد cfg وسيقوم الThumbProviderبتحميل الصورة من الرابط ويضعها ك Thumbnail للملف اتمنى وضحت الفكرة. -- -- -- طيب نجي للتطبيق :- [color=#4B0082[/color]]اولا : يجب ان يكون لديك Visual studio 2010 او 2010 #C او حتى فيجوال بيسك 2010 ولكن عليك بتحويل الكود الى الفيجوال بيسك لان المقالة تعتمد على السي شارب .. ثانيا : إنشاء مشروع جديد باسم ThumbProvider من نوع Class library .. ثالثا : اضف المكتبات الضرورية ك System.Drawing و SharpShell -- رابعا : الكود سيكون بهذه الطريقة :-[/color] PHP كود : using System;الدالة GetThumbnailImage هي المسؤولة عن إستخراج صورة (Tumb) ووضعها للملف هذه الدالة يقوم بطلبها مستكشف الوندوز Windows Explorer للغرض المذكور اعلاه . -- -- -- نأتي لشرح الاسطر المهمة في هذا الكود PHP كود : [COMServerAssociationلاحظ قمنا بوضع cfg. اي ان هذا المشروع كله لكي يجلب Thump فقط للملفات ذات الامتداد cfg. فإذا كان امتدادك باسم اخر استبدله بهذا الامتداد. .. Guid : كما جرت العادة في مكتبات COM حيث يجب تعريف دليل للكلاس حيث يجب ان يكون هذا الكلاس من نوع COM وذلك لأن الوندوز لايقبل سوى COM في الواقع كتابة هذا المشروع طويل ومتعب .. لكن بفضل مكتبة SharpShell قمنا بكتابة الThumpProvider بكل سهولة وبواسطة دالة واحدة فقط -- PHP كود : using (var reader = new StreamReader(SelectedItemStream)) الشيئ المهم في هذا الكود هي الخاصية SelectedItemStream فهي خاصية يتم اسناد القيمة اليها من خلال Windows Explorer وهي عبارة عن Stream للملف ، والكل يعرف Stream (التي من خلالها نستطيع قرائة/كتابة) ملف -- الكود المسؤول عن اعطاء thumbnail للملف هو هذا :- PHP كود : WebClient wc = new WebClient();وظيفة الكود هو اخذ اول سطر من الملف الي المفروض يكون رابط لصورة ، ويقوم بتحميل الصورة ثم إرجاع الصورة .. وفور ارجاع الصورة ال Windows explorer ، سيقوم بعرضها على الملف . -- -- -- الان بقي شيئ واحد وهو تسجيل الThumpProvider الي سويناه + تنصيبه لكي يستطيع الWindows Explorer استدعائه عندما يريد عرض Tumpnail لاحد الملفات ذات الامتداد cfg ولكن اولا سنقوم بعمل Strong name للمشروع وذلك من خلال My Project > Signing > (check) sign this assemble واكتب اي اسم كما في الصورة :- وبعدها سو Build لينتج لنا ملف ThumbProvider.dll -- -- -- الان قبل تسجيل الThumbProvider.dll على الوندوز سنقوم بتجريبه هل سيقوم بعرض Thumbnail للملفات cfg او لا. في البداية علينا فتح النوت باد وكتابة رابط لصورة بعدها نحفظ الملف بصيغة cfg .. الان علينا بتجريب المشروع ThumbProvider بالاحرى ملف ThumbProvider.dll سنقوم باستعمال الاداة ServerManager.exe المرفقة نقوم باضافة ملف ThumbProvider.dll من خلال File > Open وبعد الاضافة نقوم بتجريب الThumbProvider من خلال Test Server in test shell وبعدها ننزل وندور على الملف الي سويناه قبل شوي (test.cfg) ، والمفاجئة : تماااام قام بتحميل الصورة من خلال الرابط الموجود في الملف ثم عرضها ![]() الان نحتاج نشوفها على ارض الواقع . اي على Windows explorer لهذا علينا تسجيل الThumpProvider وتنصيبه .. نقوم بذلك من خلال الاداة نفسها : الان لتطبيق التغيرات في النظام عليك بعمل Restart للجهاز نسوي ريستارت ونرجع ..[/color] -- -- -- عدنا .. الان لو تروح للملف الي سويناه (test.cfg) مابتشوف حصل شيئ فيه ولا اعلم السبب صراحة . (اعتقد ان الملف المفروض مايكون موجود قبل التسجيل) لذلك قم بحذفه واعد الخطوات إقتباس : ستلاحظ ظهور الThumb اخيراااا ![]() واذا تريد التأكد اكثر . قم بعمل ملف cfg مرة ثانية يحتوي على رابط لصورة اخرى والنتيجة :- وتنتهي الحكاية ![]() -- -- -- الحين انت بتسألني بتقول "لو حبيت انشر برنامجي الى المستخدمين هل سأقول لكل شخص ان يقوم بتنزيل ServerManger ويقوم بتسجيل الThumpProvider" فكما تتذكرون احنا قمنا بتسجيل الThumpProvider من خلال البرنامج اذن كيف أستطيع تسجيل وتنصيب ال Provider من خلال الكود (برمجيا) ؟؟ : بعد عدة محاولات استطعت اخيرا تنفيذ هذه العملية بواسطة دالتين دالة لتسجيل الProvider والاخرى لتنصيبه : PHP كود : using System;وهذا هو التطبيق الامتداد + الدليل . تحصل عليه من الكود الي كتبناه سابقا في ThumbProvider بالتحديد هذا الكود :- PHP كود : [COMServerAssociation-- -- -- إلى هنا تنتهي المقالة اتمنى انها كانت خفيفة عليكم المرجع : NET Shell Extensions - Shell Thumbnail Handlers ((هذا الموضوع اهداء الى ali.alfoly))) RE: كيف تعرض Thumbnail للملفات - ali.alfoly - 02-11-13 السلام عليكم ورحمة الله تعجز الكلمات امام هذا الجهد والابداع الكبير من اخ محترف لا استطيع ان اجزيك شئ وجزاك الله خيرا اسئل الله تعالي ان يبارك لك في علمك ويجمعنا بك في جنات النعيم مع النبي الامين صلي الله عليه واله وصحبه وسلم جاري احلي تقيم لاحلي موضوع RE: كيف تعرض Thumbnail للملفات - الشاكي لله - 02-11-13 (02-11-13, 10:39 PM)ali.alfoly كتب : السلام عليكم ورحمة الله الحمدلله -- لكل من نزل Shell Thumb Installer.zip .. تم تعديله فالرجاء تنزيله من جديد RE: كيف تعرض Thumbnail للملفات - Sajad - 03-11-13 السلام عليكم بارك الله فيك وزادك علما نافعا تحياتي RE: كيف تعرض Thumbnail للملفات - hoob computer - 14-11-13 الله يبارك فيك أخي العزيز, شكلي ححول على السي شارب ![]() تحياتي RE: كيف تعرض Thumbnail للملفات - الشاكي لله - 14-11-13 (14-11-13, 03:34 PM)hoob computer كتب : الله يبارك فيك أخي العزيز, ههه عادي تقدر تطبق الدرس على الفيجوال بيسك بقولك ويش الي خلاني انتقل للسي شارب هما 3 اسباب فقط : 1- المؤشرات وUnsafe code : وهو انواع غير موجودة في الفيجوال بيسك تمكنك هذه الانواع من التعامل مع الذاكرة .. حيث اني كنت سابقا اتعامل مع الاسمبلي فأحب التعامل مع هذه الامور 2- محركات الالعاب : قبل سنين قررت اسوي لعبة ، وبالطبع عند الحديث عن الالعاب لابد لك ان تختار محرك لكي تنتج لك لعبة ، unity3d محرك الثلاثي الابعاد المشهور يدعم لغة السي شارب والجافا وسي++ . فكان من المستحيل ان ابرمج لعبة بالفيجوال بيسك بهذا المحرك ، المحرك الوحيد الذي يدعم الفيجوال بيسك هو Visual3D ، طبعا انا اتكلم عن ال3d فقط . Unity3D Visual3D طبعا Unity3D محرك قوي ومشهور يمكنه برمجة الالعاب لـ Wii , PC , XBOX , Iphone , Android , PS3 , PS4 .. بعكس الvisual3D الذي يدعم الPC , Xbox فقط (ولكن لكي تصمم العاب للكونسول (PS4 ,PS3) يجب عليك شراء Template من Sony اولا ) 3- المصادر الهائلة لسي# : اكبر مثال هو هذا المقال الذي لايتوفر على الفيجوال بيسك . اتحداك تحصل مقال يشرح Shell extension للفيجوال بيسك حيث انها تحتل المركز الخامس ضمن "اللغة الاكثر شعبية" بينما الفيجوال بيسك دوت نت تحتل المركز 11 .. لاحظ جميع لغات عائلة الC هي الاكثر استخداما وشهرة .. واحد الاسباب طريقة الكتابة التي تروق لبعض المبرمجين المخضرمين . RE: كيف تعرض Thumbnail للملفات - hoob computer - 14-11-13 والله يا أخي كلامك مضبوط و 100% صح, لكن أجد البرمجة بالسي شارب صعبة قليلاً لكثرة علامات { و } ههههههههه مع العلم, ايام الكلية و الجامعة كنت متفوق جداً في السي ++ و كنا في الجامعة نصمم برامج لا بأس بها في السي ++. و لكنني عندما أستخدمت الفيجوال بيسك أعجبني جداً لسهولته و مرونته في التعامل مع الادوات ... و لكن عندما أرى مقالات في السي شارب .. افكر لماذا لا انتقل إليها و إلى LINQ To SQL N Tier ؟ المشكلة في الوقت الذي أحتاجه لإتقانها ... يجب أن أبدء من البداية كي لا افوت أي شيء. و لكن هنالك أحتمال أن احول إليها إن شاء الله لقوتهما في البرمجة و لأمانهما الأعلى من الفيجوال بيسك... على العموم, إدعيلي يا أخي أحول إليها في أقرب وقت ممكن ![]() جزاك الله خيراً تحياتي RE: كيف تعرض Thumbnail للملفات - الشاكي لله - 14-11-13 (14-11-13, 04:48 PM)hoob computer كتب : والله يا أخي كلامك مضبوط و 100% صح, لكن أجد البرمجة بالسي شارب صعبة قليلاً لكثرة علامات { و } ههههههههه اذا كنت متفوق بالسي++ فالمفروض ترتاح مع السي شارب نفس القواعد .. فاصلة في النهاية ، اقواس {} ، Pointers .... انا ايضا برمجت بالسي++ .. وبعدين شفت الفيجوال بيسك مرنة وسهلة وبعدين سي شارب والان ماشي الحال وخاصة مع WPF الحلوة
RE: كيف تعرض Thumbnail للملفات - hoob computer - 14-11-13 هههههه و الله يا أخي العزيز لقد شجعتني على السي شارب ![]() سأحاول بإذن الله البدء بتعلمها و سأعمل على البدء بشيء بسيط (برنامج بسيط) و من ثم اتعمق بها و سأحاول بإذن الله تحويل مشروعي المكتمل من الفيجوال بيسك إلى السي شارب ![]() هل الـWPF سريعة؟ لقد قمت بعمل مثال عن الـWPF في الفيجوال بيسك و لكنه كان بطيئاً نسبياً! ![]() و عندما أعمل نفس المثال و لكن Windows Form أعتيادي ... يكون أسرع. لماذا هذا الفرق مع الـWPF؟ تحياتي RE: كيف تعرض Thumbnail للملفات - الشاكي لله - 14-11-13 بصراحة انا ماعندي الخبرة الكافية عن ذلك لكن شوف هذا الموضوع اكيد بفيدك http://stackoverflow.com/questions/368371/performance-comparison-of-winforms-and-wpf |