06-10-12, 10:04 PM
كاتب الموضوع : 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