منتدى فيجوال بيسك



نتائج مسابقة المقالات الربع الثاني 2010 - الإنتهاء: 27-09-10

أهلا بالضيف - الإنتهاء: 07-09-10

كاميليا - الإنتهاء: 31-10-10

عـودة للخلف   منتدى فيجوال بيسك > قسم المقالات > قسم مقالات C#

قسم مقالات C# قسم مقالات C#

الرد على الموضوع
 
أدوات الموضوع طريقة العرض
قديم 06-11-09   #1
iAGx
عضو
 
تاريخ التسجيل: Jul 2009
المشاركات: 91
عدد مرات شكره للأعضاء: 68
تم شكره 40 مره في 14 مشاركه
قوة التقييم: 2
iAGx is on a distinguished road
الافتراضي مراقبة المجلدات و الملفات بإستخدام FileSystemWatcher - الجزء الأول

ملاحظ : رجاء رجاء إحنا هنا في صرح علمي لسنا في منتديات اجتماعية ..! , انت لا تعلم مقدار الجهد المبذول في كتابة هذه المقالة حتى تخرج لك بهذا الأسلوب من التنسيق و المحتوى التقني و انا لا أدعي كمالها و لكن على الاقل افضل من لا شيء , لديك تعليق يطور المقالة و يزيد من معلومات القارء و يصحح ما وقعت به من أخطاء تفضل سأكون لك من أول الشاكرين , أنا لدي هدفين من هذه المقالة توصيل المعلومة و ثاني زيادة المحتوى العلمي للمنتدى و ليس زيادة عدد مشاركتي , تريد شكري عندك زر شكرا اسفل المقالة , ما عندك شي فقط اكتفي بالقراءة . لا تزيد عددد الردود على كلام فارغ , و كلام لا يسمن و لا يغني من جوع .
  • مقدمة سريعة .
  • الأداة و و فضاء الاسماء IO و VS 2003 - VS2005 .
  • الطرق و الأحداث و الخصائص .
  • مثال لمراقبة مجلد المفضلة .
المقدمة :

السلام عليكم , العديد منا لديه مجلدات أو ملفات لا يرغب بأن يحدث لديها أية تعديلات البعض منا و يرغب براقبة تلك الملفات و الملجلدات خوفا من حدث أية تغيرات عليها مثل الإضافة أو الحذف أو التعديل و غيرها من الأمور , أوقد ترغب بمعرفة اخر شخص قام باستخدام الملف أو ادخول على المجلد و اخر عملية كتابة أو قراءة منه . قد مثلا إذا حدث أية عملية تغيرات على المجلد أو الملفا أنترجعة إلى حالته الأصلية كما يفعل برنامج ديب فريز مثلا .

أحاول في هذه المقالة أن أتطرق لمفهوم مراقبة المجلدات و الملفات عن طريق الأداة FileSystemWatcher , طرق و أحداث و خصائص الإداة و طريقة الاستجابة للإحداث بناء على التغيرات .

الأداة و و فضاء الاسماء IO و VS 2003 - VS2005 :

ظهرت الأداة على حد علمي و مع مكتبة DotNetFramwark2.0 أية تقريبا منذ ظهور VS2005 المشكلة أنها لم تكن موجودة في شريط الأدوات و لست متأكد من هذه المعلومة لأني أعمل على VS2008 و بناء على ذالك عليك أن تقوم ببنائها من داخل الشفرة بشكل التالي :


الرمز PHP:
FileSystemWatcher FileWatcher = new FileSystemWatcher() ; 

و لأن الأداة موجودة داخل فضاء الأسماء IO فعليك استدعاء فضاء الاسماء في بداية الملف , الشفرة :


الرمز PHP:
Using System.IO 

المشكلة الأخرى هيا طريقة بناء الأحداث للأدة عن طريق الشفرة , لنفترض أننا نود مراقبة الحدث change ( سأحدث عن لاحقا ) , و الذي يقع في حالة حدوث أية تغيرات على الملفا أو المجلد , الشفرة :


الرمز PHP:
 
FileWatcher 
.Changed += new FileSystemHandler(Changed_Make); 

الفكرة في الشفرة التي في الاعلى أنني اربط الحدث Changed الخاص بالأداة FileWatcher بالطريقة Changed_Make , هذا الطريقة قد تكون أي شيء ربما ترجع قيمة أو لا تظهر رسالة ..الخ .

بالنسبة لمستخدمي VS2008 , فيمكنك مباشرة إدراج الأداة من شريط الأدوات , التي ستجدها تحت القسم Components .

الطرق و الأحداث و الخصائص .




















  • أولا الطرق , إذا أمعنت النظر في الصورة الموجودة في الأعلى ستجد أن الأداة لا تحتوي سو على طريقة واحد محملة مرتين , و هيا WaitForChanged , فكرة هذه الطريقة بإختصار مفيد هيا إنتظار حتى ينتهي المستخدم من التعديل على الملف أو المجلد , مثلا لنفترض أنك تقوم بتغير اسم مجلد معين و عندها سيقع الحدث Renamed حتى قبل أن تنهي كتابة اسم المجلد و هنا يأتي دور الطريقة , فجعل الأداة تنتظر قبل تفجير الحدث الملطوب , حتى تحدث فعلا أية تغيرات .
لطريقة صورتين ألاولى أن تجعل الاداة هيا من تحدث متى يتم تفجير الحدث و يتم استدعئها بشكل التالي :






الرمز PHP:
FileWatcher.WaitForChanged(WatcherChangeType.All); 


و هنا تستقبل متغير واحد من النوع التركيب WatcherChange . و الذي يحمل أحد القيمة التالية :


ALL : جميع الأحداث .

Changed : فقط حدث التغير .

Created : في حالة إنشاء ملف جديد .

Deleted : في حالة الحذف .

Renamed : في حالة تغير الأسم .






أما الصورة الثانية لطريقة فهيا تستقبل متغيرن أحدهما WatcherChange و الاخر المدى القصوى التي على الإداة الإنتظار قبل تفجير الحدث و هو من النوع integer , الشفرة :


الرمز PHP:
FileWatcher.WaitForChanged(WatcherChangeType.All,1000); 
  • ثانيا الأحداث , بناء على الصورة التي في الأعلى تمنحك الأداة أربعة احداث لا غير و هيا بشكل التالي :
  • Changed : عند وقو تغيرات في الملجد (نفس الامر ينطبق على الملفات ) و هنا تكون بشكل عام أي إضافة أو تعديل أو حذف .
  • Created : يقع هذا الحدث فقط في حالة إنشاء ملف أو مجلد داخل المسار المراد مراقبته .
  • Deleted : و يقع في حالة حذف ملف أو مجلد داخل المسار المراد مراقبته .
  • Renamed : و يقع في حالت تغير اسم و لاحظ اسم و ليس مسار , المسار المراد مراقبته .
ثالثا الخصائص : تمتلك الأداة ثمانية ( انضر الصور في الأعلى ) , و هيا بالشكل التالي :
  • EnableRaisingEvints : تستقبل هذه الخصية متغير من النوه bool فإذا كانت قيمة المتغير True هذا بعني تمكين الأداة , أما إذا كانت False فهذا يعني إيقاف الأدة .
  • Filter : لنفترض أنك تود مراقبة مجلد معين و لكن لا ترغب بمراقبة جميع الملفات , عوضا عن ذالك أن ترغب فقط بمراقبة الملفات النصية , تسمح لك هذه الخاصية بمراقبة نوعية محدد من الملفات و هيا تستقبل من متغير من النوع string يمثل إمتداد الملف .
  • IncludeSubdirectories : و هيا تستبقل قيمة من النوع bool فإذا كانت القيمة true ستقوم الأداة بمراقبة جميع محتويات المجلد على اختلاف مستوى العمق , أما إذا كانت flase فيها ستقراب المستوى الأول فقط من المجلد .
  • الخاصية Patch : و هنا أنت تحدد مسار الملف \ المجلد المراد مراقبته و هيا تستقبل متغير من النوع string و الذي يمثل المجلد المراد مراقبته .
سأجل بقية المقالة للجزء القادم , اذعرني حدث طرف طارئ ..







__________________
مدونة انا سي شارب
http://www.imcsharp.info

عُدلت بواسطة iAGx; 06-11-09 الساعة 06:35 PM
iAGx غير متصل   الرد باقتباس
الأعضاء التالين شكروا iAGx على هذا الموضوع :
Ahmed.Ali (07-11-09), محمد ناصر (19-03-10), محب سيدنا النبي (21-11-09), gamadeem (07-11-09), mimo (21-02-10)
قديم 06-11-09   #2
iAGx
عضو
 
تاريخ التسجيل: Jul 2009
المشاركات: 91
عدد مرات شكره للأعضاء: 68
تم شكره 40 مره في 14 مشاركه
قوة التقييم: 2
iAGx is on a distinguished road
الافتراضي

أكمل ما بدأته اليومه في المقالة السابقة , هذا تقريبا كل شي عن أداة FileSystemWatcher , حتى لا أخرج من الموضوع دون طرح مثال , سأقوم بشرح مثال لطريقة مراقبة مجلد و ليكن المفضلة .


مثال لمراقبة مجلد المفضلة .

فكرة المشروع نسخ مجلد المفضلة أو اي مجلد , إلى أي مكان ترغب فيه , كلما قمت بأية تغيرات على المجلد , سواء تعديل أو إضافة أو حذف .. الخ , طبعا هذا بالإعتماد على أداة FileSystemWatcher .

في البداية لابد من تحديد مسار المجلد المراد مراقبته , و من ثم تفعيل اداة FileSystemWatcher و أخير تحديد مستوى المجلدات المراد مراقبتها , و هذا يكون إما في مشيد النموذج أو في حدث التحميل لنموذج , الشفرة :

الرمز PHP:
FileWatcher.Path Favorites;
FileWatcher.IncludeSubdirectories true
في حالة وجود أية تغيرات , تقوم الأداة بنسخ المجلد الرئيسي و جميع محتوياته إلى مسار أقوم بتحديدة , شفرة النسخ :


الرمز PHP:
 
private bool CopyFolder(string strSrceDirstring strDestDir)
{

DirectoryInfo SourceDir = new DirectoryInfo(strSrceDir);
DirectoryInfo DestDir = new DirectoryInfo(strDestDir);
if (!
DestDir.Exists)
DestDir.Create();
foreach (
FileInfo ChildFile in SourceDir.GetFiles())
{
ChildFile.CopyTo(Path.Combine(DestDir.FullNameChildFile.Name), true);
}
foreach (
DirectoryInfo SubDir in SourceDir.GetDirectories())
{
if (!
SubDir.Exists)
SubDir.Create();
bool retVal;
retVal CopyFolder(SubDir.FullNamePath.Combine(DestDir.FullName,
SubDir.Name));
if (!
retVal)
return 
false;
}
return 
true;



كل ما في الأمر الأن انني استدعي هذه شفرة النسخ داخل أحداث الأداة جميعها , بشكل التالي :

الرمز PHP:
//حدث الإنشاء
private void FileWatcher_Created(object senderFileSystemEventArgs e)
{

CopyFolder(FavoritesFolderTo);
notifyIcon1.ShowBalloonTip(3000" ",
" .",
ToolTipIcon.Info);
StartStopWatchFile.Enabled true;


الرمز PHP:
//حدث الحذف
private void FileWatcher_Deleted(object senderFileSystemEventArgs e)
{
CopyFolder(FavoritesFolderTo);
notifyIcon1.ShowBalloonTip(3000" ",
" .",
ToolTipIcon.Info);
StartStopWatchFile.Enabled true;


الرمز PHP:
//حدث إعادة التسمية
private void FileWatcher_Renamed(object senderRenamedEventArgs e)
{
 
CopyFolder(FavoritesFolderTo);
 

, اعتذر عن الأخطاء الإملائية في الجزء السابق , فقد كنت على عجلة من أمري و لم يتسنى لي مراجعتها ..

المشروع في المرفقات .. تم و الحمد الله
__________________
مدونة انا سي شارب
http://www.imcsharp.info

عُدلت بواسطة iAGx; 08-02-10 الساعة 02:08 AM
iAGx غير متصل   الرد باقتباس
العضو التالي يشكر iAGx على هذه المشاركة :
Boutemine Oualid (06-11-09)
قديم 19-02-10   #3
fullas
عضو
 
تاريخ التسجيل: Dec 2007
المشاركات: 110
عدد مرات شكره للأعضاء: 0
تم شكره 12 مره في 12 مشاركه
قوة التقييم: 3
fullas is on a distinguished road
الافتراضي

بشكرك و جزالك الله خيرا

بتمنى تجاوبني عن كيفية مراقبة نسخ ملفات على الدريفر القابل للازالة مثل الفلاشات ميموري

ممتن لك
__________________
إذا أردت ورود الموارد إليك .... صحح الفقر و الفاقة لديك
اجتهادك فيما ضمن لك .. و تقصيرك فيما طلب منك : دليل على انطماس البصيرة منك
ابن عطاء الله السكندري
fullas غير متصل   الرد باقتباس
قديم 22-02-10   #4
iAGx
عضو
 
تاريخ التسجيل: Jul 2009
المشاركات: 91
عدد مرات شكره للأعضاء: 68
تم شكره 40 مره في 14 مشاركه
قوة التقييم: 2
iAGx is on a distinguished road
الافتراضي

اتوفع أن الأمر يتم بنفس الطريقة , ليست لديا اية معلومات الحقيقة , لكن سأحول التجربة و اعطيك الجواب في اقرب فرصة ممكنة ..
__________________
مدونة انا سي شارب
http://www.imcsharp.info
iAGx غير متصل   الرد باقتباس
قديم 21-07-10   #5
belal_btm
عضو جديد
 
تاريخ التسجيل: Dec 2007
المشاركات: 19
عدد مرات شكره للأعضاء: 2
تم شكره 0 مره في 0 مشاركه
قوة التقييم: 0
belal_btm is on a distinguished road
Post برجاء مساعدتى

اريد حفظ ملف word داخل قاعد بيانت sql server ولكن لا استطيع استدعاء الملف من قاعدة البيانات وفتحة ارجو المساعدة
belal_btm غير متصل   الرد باقتباس
قديم 21-07-10   #6
belal_btm
عضو جديد
 
تاريخ التسجيل: Dec 2007
المشاركات: 19
عدد مرات شكره للأعضاء: 2
تم شكره 0 مره في 0 مشاركه
قوة التقييم: 0
belal_btm is on a distinguished road
الافتراضي

اريد حفظ ملف word داخل قاعد بيانت sql server ولكن لا استطيع استدعاء الملف من قاعدة البيانات وفتحة ارجو المساعدة
belal_btm غير متصل   الرد باقتباس
الرد على الموضوع


يتصفح الموضوع حالياً: 1 (0 عضو و 1 ضيف)
 
أدوات الموضوع
طريقة العرض

قوانين المشاركة
لا يمكنك إضافة مواضيع
لا يمكنك إضافة ردود
لا يمكنك إضافة مرفقات
لا يمكنك تعديل مشاركاتك

رمز [IMG] متاح
رموز HTML مغلق
انتقل إلى


الساعة الآن +3: 12:06 AM.



إعلانات نصية: القرآن  الإسلام  السنة   رسول الله    صيد الفوائد طريق الإسلام   إبن باز  إبن عثيمين الإسلام سؤال وجواب  المسلم  الإسلام اليوم  البث الإسلامي    طريق القرآن   المصحف الشريف بالفلاش  رسالة الإسلام كلمات  طريق الإيمان    قناة المجد المجهر   سلطان    الراصد  البينة  البرهان  الفرقان قصة الإسلام أسرة نت دليل المواقع منتدى مكتوب

Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
هذا المنتدى يستخدم منتجات بلص
جميع الحقوق محفوظة لموقع فيجوال بيسك للعرب vb4arab.com