Механизм File-Drop некоторых связанных типов файлов (.zip, .rar,)

Я хотел бы знать, как файловый менеджер, такой как WinRAR, управляет им, чтобы включить поддержку перетаскивания для своего файла архива (когда файл перетаскивается в файл .rar, он открывается, и, возможно, WinRAR добавляет файл в архив).

Изображение для демонстрации: введите здесь описание изображения

РЕДАКТИРОВАТЬ: после некоторого комментария я хочу уточнить, что я хочу сделать (см. изображение):

  1. Файлы определенного типа данных принимают запрос на удаление (.rar).
  2. Удаление файла (.txt) приводит к вызову оболочки, который передает имя удаленного файла (.txt), а также имя файла, который принял удаление (.rar).
  3. Приложение, зарегистрированное для типа файла, вызывается, оба имени файла предоставляются ему в командной строке.

person BeschBesch    schedule 28.12.2015    source источник
comment
Не знаю, что странного в перетаскивании, но это распространенный способ включить поддержку перетаскивания для любого приложения.   -  person IInspectable    schedule 28.12.2015
comment
Да, это просто необычно и сложно, если цель перетаскивания не является исполняемым файлом или активным окном.   -  person BeschBesch    schedule 28.12.2015
comment
В вашем вопросе об этом тоже не сказано. Если вы хотите знать, как интегрироваться с оболочкой (например, с explorer.exe), вы должны хотя бы упомянуть проводник в своем вопросе. Как написано, требуется много читать, чтобы понять, что вы действительно спрашиваете.   -  person IInspectable    schedule 28.12.2015


Ответы (1)


Вам необходимо реализовать обработчик сброса оболочки.

Это COM-объект, реализующий интерфейсы IPersistFile и IDropTarget. IPersistFile сообщит вам, какой файл перетаскивается. IDropTarget даст вам IDataObject, чтобы сообщить вам, какие файлы/данные удаляются.

Документация здесь:

person Ben    schedule 28.12.2015
comment
Хорошо, это выглядит многообещающе, я посмотрю на это. - person BeschBesch; 28.12.2015