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



              

Интерфейс IShellFolder - часть 2


Два метода — 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

Папка, содержащая шаблоны типовых документов




Содержание  Назад  Вперед