Шаг 26 - Понятие пространства имен Shell namespace

Понятие "пространство имен" появилось вместе с появлением Windows 95 и остается в новых версиях до сих пор. Это иерархическая структура построенная на основе модели COM, которая включает:

Строится эта модель на основе COM, как и было объявленно при появлении этого интерфейса, что в будущем файловая система будет строиться на принципах COM (Освой программирование OLE за 21 день). Пространство имен вы видите используя Exploler. Вот это и есть пространство имен. То что вы видите отличается от файловой системы как таковой и это важно. Это не одно и тоже хотя похоже.

Самым верхнем уровнем иерархии считается рабочий стол. На данный момент пространство имен содержит больше объектов, чем файловая структура. Первое понятие это папка Shell folder. Это объект, который владеет другими объектами. Папка - это аналог директории, при этом многие объекты таковыми и являются. Подчеркиваю многие, но не все. Вот, например, те которые не имеют аналогов каталогов и являются виртуальными папками, например, My Computer или Network Neighborhood. Данные о папках, которые имеют аналоги на файловой системе хранятся в реестре по пути. Обратите внимание, что они хранятся в разделе HKEY_CURRENT_USER и специфичны для каждого пользователя.

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Explorer/Shell Folders/

Каждый объект в данной иерархии имеет свой уникальный номер (идентификатор), который и определяет положение этого объекта. При создании приложений Вы манипулируете понятием указателя на элемент списка - Pointer to an Identifier List (PIDL).

В ваших программах для поддержки работы с пространством имен необходимо подключить описание функций и констант.

#include <shlobj.h>

Весь список возможностей включает интерфейсы к объектам, которые естественно имеют свои функции:

ICommDlgBrowser 
IDockingWindow 
IDockingWindowFrame 
IDockingWindowSite 
IEnumIDList  
IPersistFolder 
IShellBrowser 
IShellExecuteHook 
IShellFolder 
IShellIcon 
IShellView 

Функции:

BrowseCallbackProc 
SHAddToRecentDocs 
SHBrowseForFolder 
SHChangeNotify 
SHFileOperation 
SHFreeNameMappings 
SHGetDataFromIDList 
SHGetDesktopFolder 
SHGetFileInfo 
SHGetInstanceExplorer 
SHGetMalloc 
SHGetPathFromIDList 
SHGetSpecialFolderLocation 
SHLoadInProc 

Для облегчения доступа к наиболее часто используемым папкам предусмотрены ряд констант и функции SHGetSpecialFolderLocation, которые описаны в подробностях.

Структуры:

BROWSEINFO 
CIDA 
FOLDERSETTINGS 
SHFILEINFO 
SHFILEOPSTRUCT 
SHNAMEMAPPING 
STRRET 

Перечисления:

SHCONTF 
SHGNO 

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 10.08.2000