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

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

Например: Пользователь переименовывает файл и нажимает клавишу ВВОД (или щелкает мышью), чтобы подтвердить действие переименования. ПЕРЕД тем, как файл фактически переименован, моя программа «прослушивает» это событие и выдает сообщение: «Вы уверены, что хотите переименовать C: \ test \ file.txt в C: \ test \ test.txt?».

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
0
1 771
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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

Ответ принят как подходящий

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

Из замечаний класса:

You can watch for renaming, deletion, or creation of files or directories. For example, to watch for renaming of text files, set the Filter property to "*.txt" and call the WaitForChanged method with a Renamed specified for its parameter.

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

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

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

Другие вопросы по теме