Подключение моей программы с событием переименования проводника 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 идея подтверждение после изменение и отмена его, если это необходимо, является лучшей идеей.