С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.74
Evg
Эксперт CАвтор FAQ
18383 / 6431 / 441
Регистрация: 30.03.2009
Сообщений: 17,852
Записей в блоге: 28
#1

Создание виртуальной файловой системы для explorer - C++

01.09.2010, 22:51. Просмотров 2397. Ответов 11
Метки нет (Все метки)

В линуксовом (юниксовом) mc есть такое понятие "виртуальная файловая система" (ВФС). Когда в программе отображается файл, к примеру архив rar, то можно enter'ом в него зайти и увидеть внутренности архива. Для этого и используется эта ВФС. Через какие-то плагины реализуется, что для файлов с таким-то расширением нужно запустить такой-то парсер, который сгенерит образ файловой системы и отдаст его в mc, который в дальнейшем будет свободно ходить по этому образу как по настоящим файлам.

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

Есть ли техническая возможность сделать сие?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2010, 22:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание виртуальной файловой системы для explorer (C++):

Реализовать алгоритм работы планировщика. Управление виртуальной памятью. Управление файловой системой - C++
Разработка программы менеджера памяти. Свопинг. Сегментная схема организации памяти. Управление виртуальной памятью. Глобальное и локальное...

Обход файловой системы и мультипоточность - C++
Работаю над программой индексирования файловой системы. Все диски обходяться(как по дереву от корня) до последней папки рекурсивно и...

Шаблон файловой системы - C++ Builder
В общем, задание такое: Разработать файловую систем, за жёсткий диск принять бинарный файл. Реализовать создание/редактирование/удаление...

Как определить сериальный номер файловой системы? - C++ Builder
Как определить сериальный номер файловой системы? В Delphi я знаю. Вот текст: Procedure TForm1.Button1Click(Sender: TObject); Var...

Создание виртуальной функции - C++ Builder
Создать родительский класс TPrinter и виртуальную функцию ShowConf (), которая выводит информацию об основных параметрах принтеров...

Посоветуйте компоненты для работы с файловой системой - C++ Builder
Посоветуйте компоненты для работы с файловой системой. Интересуют выбор каталога (в том числе и сетевого) и список файлов этого каталога

11
easybudda
Модератор
Эксперт CЭксперт С++
9700 / 5650 / 964
Регистрация: 25.07.2009
Сообщений: 10,873
02.09.2010, 09:20 #2
Evg, ну с zip архивами он себя примерно так и ведёт - открывает, как обычную папку, показывает файлы с иконками, если открыть к примеру файл с картинкой, эксплорер его по-тихому из архива распакует и покажет... Значит, в принципе как-то делается. Вопрос только в том, зарыта ли эта фишка глубоко в эксплорер, или в виде плагина подтягивается... Но при этом тот же WinRAR может зарегистрировать на себя zip архивы и они станут в раре открываться так же, как родные раровские...
0
odip
Эксперт С++
7159 / 3221 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
02.09.2010, 09:32 #3
Поддержка zip-архивов встроена самим Microsoft в Windows XP
0
Evg
Эксперт CАвтор FAQ
18383 / 6431 / 441
Регистрация: 30.03.2009
Сообщений: 17,852
Записей в блоге: 28
02.09.2010, 15:07  [ТС] #4
Цитата Сообщение от odip Посмотреть сообщение
Поддержка zip-архивов встроена самим Microsoft в Windows XP
Цитата Сообщение от easybudda Посмотреть сообщение
Но при этом тот же WinRAR может зарегистрировать на себя zip архивы и они станут в раре открываться так же, как родные раровские...
А winrar работает в своём собственном окне, а не в окне проводника
0
easybudda
Модератор
Эксперт CЭксперт С++
9700 / 5650 / 964
Регистрация: 25.07.2009
Сообщений: 10,873
02.09.2010, 15:44 #5
Цитата Сообщение от Evg Посмотреть сообщение
А winrar работает в своём собственном окне, а не в окне проводника
Ну да. Вот только судя по
Цитата Сообщение от odip Посмотреть сообщение
Поддержка zip-архивов встроена самим Microsoft в Windows XP
влепить такую же поддержку для дугих типов архивов в самом проводнике наверное не получится... Хотя точно не уверен, надо в мелкомягкой документации рыться (занятие - врагу не пожелаешь )
0
Evg
Эксперт CАвтор FAQ
18383 / 6431 / 441
Регистрация: 30.03.2009
Сообщений: 17,852
Записей в блоге: 28
02.09.2010, 16:49  [ТС] #6
Абыдна... Хотя если повспоминать, то кроме zip'а вроде бы такую функциональность нигде больше и не видел
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
02.09.2010, 22:45 #7
Evg, это технология Shell Extension - расширение explorer
Прогрессивная достаточно, вот самому приходится изучать
идея в создании COM-объекта-сервиса, который загрузится в проводник и тот будет тянуть от него интерфейсы, например ShellFolder - для физического отображения папки, ShellView - для отображения в проводнике итд, довольно много всего и не совсем просто

например
http://msdn.microsoft.com/en-us/library/cc144090(v=VS.85).aspx

Добавлено через 1 минуту
Цитата Сообщение от Evg Посмотреть сообщение
Абыдна... Хотя если повспоминать, то кроме zip'а вроде бы такую функциональность нигде больше и не видел
bluetooth-ftp сервис, встроенный прямо в проводник, у меня на ноуте веб-камера прямо в моем компьютере отображается, применений масса
1
Evg
Эксперт CАвтор FAQ
18383 / 6431 / 441
Регистрация: 30.03.2009
Сообщений: 17,852
Записей в блоге: 28
02.09.2010, 22:57  [ТС] #8
alex_x_x, а есть какой-нибудь пример конкретной несложной программы? А то по этому описанию не очень понял, что с чем едят и куда засовывают
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
02.09.2010, 23:08 #9
две статьи у дяди
http://www.codeproject.com/KB/shell/shellextguide1.aspx
http://www.codeproject.com/KB/shell/shellextguide2.aspx
Visual C++ Windows Shell Programming книга, в гугле по второй же ссылке
на мсдне должны быть примеры

просто я сейчас с этим в уже практически готовом проекте разбираюсь, поэтому с нуля писать не приходилось
1
Evg
Эксперт CАвтор FAQ
18383 / 6431 / 441
Регистрация: 30.03.2009
Сообщений: 17,852
Записей в блоге: 28
02.09.2010, 23:22  [ТС] #10
Мда... надо будет запастись терпением
0
Evg
Эксперт CАвтор FAQ
18383 / 6431 / 441
Регистрация: 30.03.2009
Сообщений: 17,852
Записей в блоге: 28
05.09.2010, 11:20  [ТС] #11
Цитата Сообщение от alex_x_x Посмотреть сообщение
две статьи у дяди
http://www.codeproject.com/KB/shell/shellextguide1.aspx
http://www.codeproject.com/KB/shell/shellextguide2.aspx
Visual C++ Windows Shell Programming книга, в гугле по второй же ссылке
на мсдне должны быть примеры

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

Идея следующая. Запускаю свою программу, которая ковыряется на диске, собирает информацию из разных папок (например, найти все файлы с расширением *.txt) и формирует некий виртуальный каталог, в котором есть список всех найденных файлов, но расположенных так, как будто все эти файлы находятся в одном каталоге. Далее открывается explorer, отображающий эту папку как Readonly: файлы можно сортировать по имени, по размеру, по дате создания, открывать дабл-кликом, смотреть превью (если это картинка или видео) и т.д.

Насколько я понял из описания в первой табличке, там желаемой возможности нет. Я по английски читаю медленно, а потому глазами всю статью "пробежать" не могу. Поэтому мне проще спросить тут
0
easybudda
Модератор
Эксперт CЭксперт С++
9700 / 5650 / 964
Регистрация: 25.07.2009
Сообщений: 10,873
05.09.2010, 12:06 #12
Цитата Сообщение от Evg Посмотреть сообщение
Запускаю свою программу, которая ковыряется на диске, собирает информацию из разных папок (например, найти все файлы с расширением *.txt) и формирует некий виртуальный каталог, в котором есть список всех найденных файлов, но расположенных так, как будто все эти файлы находятся в одном каталоге. Далее открывается explorer, отображающий эту папку как Readonly: файлы можно сортировать по имени, по размеру, по дате создания, открывать дабл-кликом, смотреть превью (если это картинка или видео) и т.д.
В мак-оси smart folder примерно так же работает...
0
05.09.2010, 12:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2010, 12:06
Привет! Вот еще темы с ответами:

Написать горячие клавиши для виртуальной клавиатуры - C++ Builder
Всем доброго времени суток! Помогите пожалуйста,я прочитал многое на этом форуме,но свое так и не нашел. И так,мое задание звучит так:"Надо...

Разработать Windows-приложение для реализации простейшей (FAT) виртуальной файловой системы - C#
Подскажите что почитать, что бы реализовать что-нибудь из этого? ну или если у кого есть уже готовое скиньте ком не трудно) 1....

Интеграция файловой системы с ОС на виртуальной машине - Windows 7
Здравствуйте. Можете подсказать, как сделать видными на ОС Linux Ubuntu (работающей на виртуальной машине) файлы с компьютера, с дисков...

Можно запустить любую программу через Delphi из виртуальной файловой системы или архива? - Delphi
Можно запустить любую программу через Delphi из виртуальной файловой системы или архива?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.