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

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

  •  09-06-2019
  •  | 
  •  

Вопрос

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

Например:Пользователь переименовывает файл и нажимает 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 - что, вероятно, означает, что вам придется подключиться к его созданию и раздать свой макет.

Лично я думаю, раз уж вы говорите о переименовании, идея Вильгельмтелля подтверждения после изменение и отмена его при необходимости — лучшая идея.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top