Иллюстрированный самоучитель по Delphi 7 для профессионалов

Интерфейс IShellFolder

Два метода – ParseDisplayName и GetDisplayNameOf – взаимно дополняют друг друга. Первый из них нужен, если вы имеете указатель на ishellFoider и хотите связать его с конкретной папкой. На практике это сводится к задаче в три действия:

  1. Получить указатель на интерфейс какой-либо папки, скажем, рабочего стола при помощи ShGetDesktopFolder.
  2. Получить указатель (pidl) нужного вам элемента. Это осуществимо многими способами. Первый из них – как раз через вызов метода IShellFolder.ParseDisplayName. Если вы хотите получить доступ к одной из виртуальных (специальных) папок, то незаменимой будет следующая функция:
function SHGetSpecialFolderLocation(hwndOwner: HWND; nFolder: Integer;
 var ppidl: PItemlDList): HResult;

В параметре nFolder вы задаете константу, соответствующую выбранной специальной папке. На выходе будет указатель на элемент ppidl, соответствующий этой папке.

Примечание
Во многих функциях Shell API и методах его интерфейсов встречается параметр hwndOwner. Он должен задавать дескриптор окна на тот случай, если придется выводить диалоговое окно или окно с сообщением об ошибке
.

Возможные значения параметра nFolder перечислены в табл. 31.2. В комментариях к ним "виртуальная" папка является особым объектом, который предоставляется пользователю при помощи Shell API. Просто "папка" реально существует где-то в файловой системе.

Таблица 31.2. Константы, определяющие специальные папки.

Значение Комментарий
CSIDL_BITBUCKET Корзина (Recycle bin) – специальная папка для удаленных файлов. Пути к Recycle bin нет в системном реестре во избежание перемещения или удаления, и его не узнать иным методом
CSIDL_CONTROLS Панель инструментов (Control Panel) – виртуальная папка, содержащая значки апплетов Панели инструментов
CSIDL_DESKTOP Виртуальная папка Рабочий стол (Desktop), корневая в пространстве имен
CSIDL_DESKTOPDIRECTORY Папка файловой системы, реально содержащая объекты рабочего стола
CSIDL DRIVES Виртуальная папка Мой компьютер (My Computer), содержащая элементы для всех накопителей на компьютере подключенных сетевых устройств, папки Принтеры, Панель инструментов, Удаленный доступ к сети
CSIDL FONTS Виртуальная папка Шрифты
CSIDL NETHOOD Папка, содержащая объекты сетевого окружения
CSIDL_NETWORK Виртуальная папка Сетевое окружение (Network Neighborhood)
CSIDL_PERSONAL Папка Мои документы
CSIDL_PRINTERS Виртуальная папка Принтеры (Printers)
CSIDL_PROGRAMS Папка Программы из главного меню, содержащая папки установленных на компьютере программ
CSIDL RECENT Папка, содержащая ссылки на последние использовавшиеся документы (Recent)
CSIDL SENDTO Папка, содержащая элементы контекстного меню Send To…
CSIDL_STARTMENU Папка, содержащая элементы главного меню Пуск (Start)
CSIDL_STARTUP Папка, содержащая элементы меню Автозапуск (Startup)
CSIDL_TEMPIATES Папка, содержащая шаблоны типовых документов
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.