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

StackOverflow https://stackoverflow.com/questions/1143115

سؤال

انا استخدم هذه تنفيذ ReadDirectoryChangesw لرصد التغييرات على سطح المكتب. يخطط برنامجي لتشغيل بعض البرامج الصغيرة عند إنشاء ملف على سطح المكتب.

الآن المشكلة التي أقوم بها هي عندما أقوم بإنشاء اختصار جديد عبر قائمة سياق النقر بزر الماوس الأيمن فوق ReadDirectoryChangesW يحصل إشعارا بإخطار تم إنشاؤه تم إنشاء الملف، ولكن بعد ذلك يحصل على إعلام آخر يقول تم حذف الملف. لقد تم تشغيل هذه المشكلة منذ نظام التشغيل Windows Vista.

أي شخص لديه أي فكرة عما يمكن أن يكون خطأ؟ هل هناك وظيفة أخرى يجب أن أستخدمها لمراقبة تغييرات الدليل الخاصة ب Vista و 7؟

شكرا، كريشنا

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

المحلول 3

تمكنت من حل هذه المشكلة. ما زلت لا أعرف لماذا أحصل على كل تلك الأحداث الخاطئة الغريبة ولكن حصلت على النتيجة النهائية لذلك سأترك هذا السؤال.

شكرا لجميع التعليمات.

نصائح أخرى

يقوم Windows ببعض الأشياء المضحكة مع ملفات .lnk بحيث لا يمكنك رؤية ملحق .lnk. ربما لهذا السبب يتم إرسال الإشعار المحذوف، لأن Windows نفسه لا يمكنه رؤية ملف "Shortcut.Lnk" الجديد، فقط "الاختصار الجديد". ولكن هذه مجرد نظرية.

إذن ما سأفعله هو محاولة العمل حولها، وتجاهل إشعار الملفات المحذوفة إذا كان الملف لا يزال موجودا. على افتراض أنك تستطيع معرفة أن ملف .lnk لا يزال موجودا بالطبع :)

هل حددت أي مرشحات: قد ترى الاختصار الذي يتم إنشاؤه (وعدم مطابقة فلترك).

يميل Explorer إلى إنشاء أشياء باسم ثابت، ثم أعد تسميته. وبالتالي ReadDirectoryChangesW سوف نرى تغييرات متعددة.

أفكار إضافية:

ملاحظة، يمكن أن تحتوي المخزن المؤقت مع إشعار التغيير على إشعارات متعددة، كلها تتم قراءتها.

ماذا فعلت مراقبة العملية عرض في نفس الوقت؟

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