2015-09-06 7 views
1

Я думаю, что есть способ расширить оболочку Windows, чтобы сделать (например) другие типы архивов в том же духе поддержки ZIP-файлов «сжатых папок».Каков интерфейс для реализации для создания «папок», таких как «ZIP-сжатые папки» в проводнике Windows?

Я признаю, что интерфейс оболочки довольно ясен, когда вы знакомы с терминологией оболочки, но на самом деле тупой в противном случае. Мое текущее предположение было бы IShellFolder, но я думаю, что это создаст дополнительную папку в том же месте, что и в дополнение к файлу, вместо предоставления специальной поддержки самого файла.

Итак, что реализовать?

+1

Я думаю, что это оболочка расширение пространства имен. IShellFolder - это только интерфейс, который представляет все контейнеры (папки) оболочки. –

+0

Это точно, что это такое. Обычный SNE, который открывает .zip-файл и представляет его содержимое в виде папок и файлов с использованием стандартных интерфейсов оболочки, таких как 'IShellFolder' и' IShellItem', и PIDL. –

ответ

0

Интерфейс оболочки не предназначен специально для реализации сжатых папок. Он реализован в виде обычного Shell Extension пространство имен, что просто случается, чтобы создать/открыть обычный файл .zip и представить его содержание в Shell, используя PIDLs и стандартные интерфейсы оболочки, как IShellFolder, IShellItem, IDataObject, IEnumIDList и т.д. ОПО даже представляет собой файл .zip как подпапку в своей родительской папке, а не как файл, поэтому оболочка может перемещаться в .zip-файл, используя реализацию SNE IShellFolder, как и любую другую папку. У Shell нет понятия, что он обращается к .zip-файлу, это всего лишь еще один элемент Shell, характеристики которого говорят Shell, как работать с ним. Реализация SNE обрабатывает детали доступа/обновления .zip-файла вместо файловой системы.

Существует целый раздел MSDN, который описывает должен создать Shell пространство имен расширений, в том числе:

Windows Shell

Creating Shell Data Source Objects and Extending the Shell Namespace

Creating Shell Extension Handlers

Implementing the Basic Folder Object Interfaces

+0

Нет ли там семантической перегрузки над словом «расширение»? Возможно, я ошибаюсь, но «обработчики расширения», похоже, связаны с расширениями файловых путей, тогда как «расширение пространства имен», похоже, связано с расширением пространства имен. –