Подключение моей программы к событию переименования проводника Windows
Вопрос
Есть ли способ на каком-либо языке перехватить мою программу, когда пользователь переименовывает файл?
Например:Пользователь переименовывает файл и нажимает Enter (или щелкает мышью), чтобы подтвердить действие переименования.ПЕРЕД фактическим переименованием файла моя программа «прослушивает» это событие и выводит сообщение: «Вы уверены, что хотите переименовать C: est\file.txt в C: est est.txt?».
Я думаю/надеюсь, что это возможно с помощью C++, C# или .NET..Но я понятия не имею, где искать.
Решение
Вероятно, вы можете решить эту проблему, используя Класс FileSystemWatcher в .NET Framework.
Из высказываний класса:
Вы можете наблюдать за переименованием, удалением или созданием файлов или каталогов.Например, чтобы наблюдать за переименованием текстовых файлов, установите свойство фильтра в «*.txt» и вызовите метод Waitforchanged с переименованным для его параметра.
Другие советы
Я предполагаю, что это нет возможно, я нашел этот который предназначен для мониторинга операций (включая переименование) в папке, но похожего метода для файлов не существует.
@Richard, FileSystemWatcher хорош, если вам нужно только отслеживать изменения, но ему нужно их прерывать, чего он сделать не может.
IFileOperationProgressSink.PreRenameItem
это самая близкая поддерживаемая вещь, о которой я знаю.К сожалению, это не привязка к Проводнику, поэтому вы можете использовать его только для своих целей. IFileOperation
действия.В зависимости от ваших потребностей вы можете написать расширение оболочки, чтобы сделать свое собственное ConfirmRename
(или что-то в этом роде) и разветвляться оттуда.
В противном случае вы ищете зацепку SHFileOperation
, Я думаю.Это придется сделать в неуправляемом коде, поскольку вы будете загружены в Explorer.exe.Для Vista это было изменено на IFileOperation
- что, вероятно, означает, что вам придется подключиться к его созданию и раздать свой макет.
Лично я думаю, раз уж вы говорите о переименовании, идея Вильгельмтелля подтверждения после изменение и отмена его при необходимости — лучшая идея.