Member 11562680 Ответов: 1

Зацепите COM-интерфейс IFileOperation,перетащите файл в корзину


Я подключаю COM-интерфейс IFileOperation,копирую, вставляю, удаляю, переименовываю его нормально,я могу получить какой-то журнал, который я хотел,но когда я перетаскиваю файлы в корзину,DeleteItem и DeleteItems не выполняются,MoveItem также не выполняются, почему? Этот вопрос беспокоил меня уже давно,кто может сказать мне причину,что я должен делать.
Спасибо!
извините мой английский очень плох

Jochen Arndt

Хороший вопрос, который заслуживает одобрения.

У меня нет ответа, но есть возможное объяснение:

При выполнении операций перетаскивания цель перетаскивания отвечает за выполнение этой операции. Это проводник Windows для мусорной корзины. Перемещение файла в корзину не является нормальным перемещением (исходная информация о файле также должна быть сохранена). Этот процесс был изменен с Vista.

Таким образом, все связанные операции выполняются проводником Windows, а не системой (игнорируя тот факт, что проводник является неотъемлемой частью системы). Когда проводник не использует "обычные" операции с системными файлами, но низкоуровневые или системные внутренние функции, вы не поймаете их на крючок.

Получаете ли вы крючок при удалении файла из Проводника?

Member 11562680

Спасибо!
Я могу подключить com-интерфейс IFileOption в проводнике,если я удалил файл,я могу получить путь к файлу, тип файла и так далее.
Я не знаю, что мне делать, когда я перетаскиваю файлы в корзину

Jochen Arndt

Папка "корзина" - это специальная папка, в которой файлы обрабатываются не так, как в других папках (за исключением случаев их окончательного удаления). При удалении файла он перемещается в папку корзины (фактически подпапку пользователя, выполняющего удаление) с использованием нового скрытого имени, а исходная информация о файле (имя и путь, даты, атрибуты) сохраняется в метаданных. Эти метаданные считываются проводником для отображения содержимого папки.

Но я до сих пор не могу ответить, почему поведение отличается между обычным удалением и перетаскиванием.

0x01AA

Можете ли вы наблюдать то же самое при перетаскивании в другую папку, кроме корзины?

Member 11562680

Спасибо!
Я не могу наблюдать то же самое при перетаскивании в другую папку, кроме корзины
Я могу подключить com интерфейс IFileOption в проводнике

1 Ответов

Рейтинг:
0

TryKang

Как вы подключаете IFileOption и получаете имя файла и путь к нему в операции копирования, вставки,перетаскивания. Не могли бы вы поделиться некоторыми из ваших кодов? Большое спасибо.