سؤال

هل هناك أي طريقة، بأي لغة، لربط برنامجي عندما يقوم المستخدم بإعادة تسمية ملف؟

على سبيل المثال:يقوم المستخدم بإعادة تسمية ملف ثم يضغط على زر الإدخال (أو ينقر بعيدًا) لتأكيد إجراء إعادة التسمية.قبل إعادة تسمية الملف فعليًا، "يستمع" برنامجي إلى هذا الحدث وينبثق رسالة تقول "هل أنت متأكد من أنك تريد إعادة تسمية C: est\file.txt إلى C: est est.txt؟".

أفكر/آمل أن يكون هذا ممكنًا باستخدام C++ أو C# أو .NET..لكن ليس لدي أي فكرة عن المكان الذي أبحث عنه.

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

المحلول

ربما يمكنك حل هذه المشكلة باستخدام فئة FileSystemWatcher في إطار عمل .NET.

من ملاحظات الصف:

يمكنك مشاهدة إعادة تسمية أو حذف أو إنشاء ملفات أو أدلة.على سبيل المثال ، لمشاهدة إعادة تسمية الملفات النصية ، قم بتعيين خاصية Filter على "*.txt" واستدعاء طريقة WaitforChanged باستخدام محدد المعلمات الخاصة به.

نصائح أخرى

تخميني هو أن هذا هو لا ممكن، لقد وجدت هذا وهو مخصص لعمليات المراقبة (بما في ذلك إعادة التسمية) على المجلد، ولكن لا يبدو أن هناك طريقة مماثلة للملفات.

@ Richard، يعد FileSystemWatcher أمرًا جيدًا إذا كنت تحتاج فقط إلى مراقبة التغييرات، لكنه يحتاج إلى مقاطعتها وهو ما لا يمكنه فعله.

IFileOperationProgressSink.PreRenameItem هو أقرب شيء مدعوم أعرفه.ولسوء الحظ، فهو لا يرتبط بـ Explorer - لذا يمكنك استخدامه فقط لأغراضك الخاصة IFileOperation أجراءات.اعتمادًا على احتياجاتك، يمكنك كتابة امتداد الصدفة لتفعله بنفسك ConfirmRename (أو شيء من هذا)، وتفرع من هناك.

خلاف ذلك، كنت تبحث في التثبيت SHFileOperation, ، أظن.يجب أن يتم ذلك في تعليمات برمجية غير مُدارة، حيث سيتم تحميلك في Explorer.exe.بالنسبة لنظام التشغيل Vista، تم تغيير هذا إلى IFileOperation - وهو ما يعني على الأرجح أنه سيتعين عليك ربط إنشائه وتمرير صورتك الوهمية.

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

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