تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
معلومة ::: FileSystemWatcher أداة هامة جداً
#1
كاتب الموضوع : BADRMEDIA


السلام عليكم ورحمة الله وبركاته

بصراحة من العيب أن تكون لديك هذه الأداة FileSystemWatcher ولا تعرف قيمتها

فلها فوائد جمة وستفتح عليك أفكار برامج كثيرة وممتعة - فوظيفتها ببساطة مراقبة أى تغييرات على مجلد معين أو أى شئ بداخله


كيفية استخدامها

أول شئ ضعها على النموذج وستجدها فى قائمة الأدوات


لها أربع خصائص ذات أهمية قبل استخدامها لابد تعيين قيم لهم

الخاصية Path و Filter و NotifyFilter و IncludeSubdirectories


الخاصية Path نحدد فيها مسار المجلد الذي نرغب بمراقبته ولكن سيتم إعلامك بالتغييرات داخل المجلد وليس بالتغييرات على خصائصه هو

الخاصية IncludeSubdirectories

فى حالة جعلها تساوى True فأنك ستراقب المجلد بكل شجرته وتفرعاته من مجلدات فرعية منه وملفات أى الجذر هو المجلد المحدد - وفى حالة جعلنا قيمة الخاصية False سيكون المراقبة على المجلد فقط


الخاصية Filter تحدد فيها ملفات معينة إذا أردت مراقبة ملفات ذات امتداد محدد

واستخدام *.* تستطيع مراقبة جميع الملفات دون تحديد
أما فى حالات التحديد فأنك تراقب المحدد فقط مثل *.exe
القيمة الافتراضية لهذه الخاصية هي Null وهي تطابق *.*

الخاصية NotifyFilter مكودة على مستوى البت bit-coded بحيث يمكنك تحديد تشكيلة من واحد أو أكثر من قيم مرقمة enumerated كـ Attributes و CreationTime و DirectoryName و FileName و LastAccess و LastWrite و Security و Size و القيمة الافتراضية لها هي

LastWrite Or FileName Or DirectoryName ففي هذه الحالة لن تظهر تنبيهات عندما تتغير الخصائص


مثال عن كيفية تعريف تحكم FileSystemWatcher من أجل التغييرات في شجرة المجلد C:\Windows


ندرج الأدة FileSystemWatcher



كود :
FileSystemWatcher1.Path = "c:\windows"
' بالخاصية True نستطيع مراقبة المجلدات الداخلية المتفرعة من المجلد
FileSystemWatcher1.IncludeSubdirectories = True
' نحن سنراقب ملفات DLL فقط
FileSystemWatcher1.Filter = "*.dll"

FileSystemWatcher1.NotifyFilter = FileSystemWatcher1.NotifyFilter Or NotifyFilters.Attributes

FileSystemWatcher1.EnableRaisingEvents = True


اظهار التنبيهات

نحن عرفنا الخصائص جاء دور الحصول على التنبيهات

وتتم التنبيهات فور حدوث تغيير

كطريقة للحصول على التنبيهات من FileSystemWatcher هي كتابة معالجات للأحداث الخاصة بهذا العنصر ولكن هذه الأحداث لن تبدأ بالعمل إلا بضبط الخاصية EnableRaisingEvents = True

و تستقبل الأحداث Created و Deleted و Changed البارامتر FileSystemEventArgs الذي يعرض خاصيتان هامتان Name اسم الملف الذي حدث عليه التغير و FullPath مسار ذلك الملف



كود :
Private Sub FileSystemWatcher1_Created(ByVal sender As Object, _
ByVal e As FileSystemEventArgs) Handles FileSystemWatcher1.Created

msgbox("File created: {0}", e.FullPath)

End Sub


كود :
Private Sub FileSystemWatcher1_Deleted(ByVal sender As Object, _
ByVal e As FileSystemEventArgs) Handles FileSystemWatcher1.Deleted

msgbox("File deleted: {0}", e.FullPath)

End Sub



كود :
Private Sub FileSystemWatcher1_Changed(ByVal sender As Object, _
ByVal e As FileSystemEventArgs) Handles FileSystemWatcher1.Changed

msgbox("File changed: {0}", e.FullPath)

End Sub


البارامتر FileSystemEventArgs يقوم أيضاً بعرض خاصية ChangeType وهي خاصية مرقمة Enumerated حيث تخبرك بالحدث الذي وقع على الملف بحيث يمكنك استخدامها لعمل إجراء معالجة وحيد للأحداث الثلاثة السابقة



كود :
Private Sub FileSystemWatcher1_All(ByVal sender As Object, ByVal e As FileSystemEventArgs) _
Handles FileSystemWatcher1.Changed, FileSystemWatcher1.Created, FileSystemWatcher1.Deleted

msgbox("File changed: {0} ({1})", e.FullPath, e.ChangeType)

End Sub
}}}
تم الشكر بواسطة:
#2
الحدث Changed لا يستقبل أية معلومات حول نوع التغيير الذي سبب الحدث

الحدث Renamed يستقبل البارامتر RenamedEventArgs الذي يعرض خاصيتان إضافيتان هما OldName الاسم القديم و OldFullPath المسار الكامل القديم


كود :
Private Sub FileSystemWatcher1_Renamed(ByVal sender As Object, ByVal e As RenamedEventArgs) _
Handles FileSystemWatcher1.Renamed


msgbox("File renamed: {0} => {1}", e.OldFullPath, e.FullPath)


End Sub




}}}
تم الشكر بواسطة: ابو روضة
#3
صفحة الأدة فى مكتبة MSDN


http://msdn2.microsoft.com/en-us/lib...er(VS.71).aspx
}}}
تم الشكر بواسطة: ابو روضة , kebboud


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  معلومة :: تعلم كيف تحفظ صورة في My.Settings بدون الإحتياج إلى مسارها! أسامة أحمد 13 6,261 15-04-24, 01:13 AM
آخر رد: أبو جودة
  [مقال] إضافة خاصية التحجيم التلقائي - AutoSize - إلى أداة مربع النص - TextBox sooriaty03 10 12,045 21-03-21, 09:53 PM
آخر رد: عبد الهادي بهاب
  معلومة ::: ListBox Blue Sky 14 22,062 14-11-16, 11:32 PM
آخر رد: فارس جراح
  معلومة مهمه فى المصفوفات ali.alfoly 2 3,734 30-08-13, 02:25 AM
آخر رد: ali.alfoly
  من المنتدى القديم - معلومة ::: ProgressBar ( للاخ BADRMEDIA ) المبرمج علي نوري 2 3,832 23-08-13, 11:17 PM
آخر رد: nin9e
  من المنتدى القديم - معلومة ::: CheckBox ( للاخ BADRMEDIA ) المبرمج علي نوري 1 2,920 30-11-12, 05:54 PM
آخر رد: مبرمج أوتار
  معلومة :: الحل لمشكلة الخطأ في الكود For Each i As Button In Me.Controls Aly El-Haddad 2 3,569 10-11-12, 09:15 PM
آخر رد: Mr. DotNet
  معلومة : Partial Class RaggiTech 1 2,670 06-10-12, 11:03 PM
آخر رد: RaggiTech
  معلومة : TryCast مهمة RaggiTech 0 2,717 06-10-12, 11:02 PM
آخر رد: RaggiTech
  معلومة : XML Comments مهمة RaggiTech 1 2,424 06-10-12, 11:01 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم