Подключение моей программы с событием переименования проводника windows

есть ли способ на любом языке подключить мою программу, когда пользователь переименовывает файл?

например: Пользователь переименовывает файл и нажимает enter (или щелкает мышью) для подтверждения действия переименования. Прежде чем файл будет переименован, моя программа "прослушивает" это событие и выдает сообщение "вы уверены, что хотите переименовать C:testfile - ... txt в C:testtest.txt?".

Я думаю / надеюсь, что это возможно с C++, C# или .NET.. но я понятия не имею, где искать.

3 ответов


вы, вероятно, можете решить эту проблему с помощью класс FileSystemWatcher в .NET framework.

из класса Примечания:

вы можете следить за переименование, удаление, или создание файлов или каталогов. Например, следить за переименованием текстовые файлы, задайте для свойства Filter значение "*.txt " и вызовите WaitForChanged метод с переименованным, указанным для его параметр.


Я предполагаю, что это не возможно, я нашел этой который предназначен для мониторинга операций (включая переименование) в папке, но, похоже, нет аналогичного метода для файлов.

@Richard, FileSystemWatcher хорош, если вам нужно только отслеживать изменения, но ему нужно прерывать их, что он не может сделать.


IFileOperationProgressSink.PreRenameItem является ближайшей поддерживаемой вещью, которую я знаю. К сожалению, это не крючок в Explorer-поэтому вы можете использовать его только для своего собственного IFileOperation действия. В зависимости от ваших потребностей, вы можете написать расширение оболочки, чтобы сделать свой собственный ConfirmRename (или что-то), и ветвь оттуда.

в противном случае, вы смотрите на подключение SHFileOperation, Я думаю. Это должно быть сделано в неуправляемом коде, так как вы будете загружены в Explorer.исполняемый. Для Vista, это было изменено на IFileOperation - что, вероятно, означает, что вам придется подключить его создание и передать свой макет.

лично я думаю, поскольку вы говорите о переименовании,wilhelmtell идея подтверждение после изменение и отмена его, если это необходимо, является лучшей идеей.