سؤال

أحتاج إلى .NET's fileystemwatcher التناظرية في RAW C ++/WinAPI. لقد بدأت تقريبًا في ترميز أحدهم بنفسي باستخدام FindFirstChangenotification/FindNextChangenotification ، ولكن بعد ذلك حدث لي أنني ربما لست أول من يحتاج إلى هذا وربما يكون شخص ما على استعداد للمشاركة.

من الناحية المثالية ما أحتاجه هو فئة يمكن استخدامها على النحو التالي:

FileWatcher fw;
fw.startWatching("C:\MYDIR", "filename.dat", 
     FileWatcher::SIZE | FileWatcher::LAST_WRITE,
     &myChangeHandler);
...
fw.stopWatching();

أو إذا كان سيستخدم بعض الشيء مثل Boost :: الإشارة سيكون أفضل. ولكن من فضلك ، لا تبعيات غير المكتبة القياسية ، BOOST و RAW WINAPI. شكرًا!

هل كانت مفيدة؟

المحلول

ماذا عن وظيفة ReadDirectoryChangesw؟

http://msdn.microsoft.com/en-us/library/aa365465(vs.85).aspx

إنه يخزن الإخطارات في المخزن المؤقت حتى لا تفوت أي تغييرات (ما لم يكن المخزن المؤقت يتدفق)

نصائح أخرى

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

لاحظ أن واجهة برمجة تطبيقات Win32 هنا لديها بعض القيود التي تجعل من الصعب/من المستحيل تجنب الإخطارات المفقودة. الخلفية وجولة العمل المزعومة لواجهة برمجة التطبيقات هنا

هذا هو حل Cross Platform ، ولكنه يلف الوظيفة بأشياء Win32 بشكل جيد:https://code.google.com/p/simplefilewatcher/

http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.created٪28v=vs.71٪29.aspx ما سبق يفعل throgh c#، يمكننا دائما كتابة غلاف com

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top