Есть ли у виртуальной файловой системы Explorer общедоступный API?

Проводник Windows представляет собой виртуальную «файловую систему», корнем которой является папка «Рабочий стол», содержащая «Корзину» и «Этот/Мой компьютер», которая, в свою очередь, содержит смонтированные файловые системы, библиотеки, устройства UPnP/MTP/PTP и сетевые ярлыки.

Проводник

Учитывая, что один и тот же макет можно наблюдать во встроенных диалоговых окнах открытия/сохранения/выбора каталогов, можно предположить, что существует (внутренний?) API, раскрывающий эту «VFS».

Так ли это? Если да, является ли такой API общедоступным и можно ли его использовать в моих собственных приложениях?


person Eugene Pankov    schedule 27.06.2015    source источник


Ответы (1)


Учитывая, что один и тот же макет можно наблюдать во встроенных диалоговых окнах открытия/сохранения/выбора каталогов, можно предположить, что существует (внутренний?) API, раскрывающий эту «VFS».

На самом деле средства выбора отображают настоящее окно проводника, встроенное в их пользовательский интерфейс, и позволяют проводнику управлять файловой системой.

Но да, есть общедоступный API, как упомянул @JonathanPotter — Пространство имен оболочки. Это тот же API, который сам Explorer использует практически для всего, что он делает.

Папки и файлы представлены в виде идентификаторов ITEMIDLIST и могут доступ с помощью IShellFolder и IShellItem (среди прочего).

Начните с SHGetDesktopFolder(), чтобы получить IShellFolder интерфейс для root Папка рабочего стола, а затем при необходимости вы можете детализировать ее иерархию, используя IShellFolder::EnumObjects() для перечисления дочерних папок/файлов, IShellFolde::BindToObject()< /a>, чтобы получить IShellFolder интерфейсов для подпапок, IShellFolder::GetDisplayNameOf() чтобы получить имена папок/файлов и т. д.

Существует МНОЖЕСТВО того, что вы можете получить/сделать с помощью интерфейсов Shell, это даже не царапает поверхность всего, что доступно.

person Remy Lebeau    schedule 28.06.2015