Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСиСП - методички / OS&SP_Lab_2.6(shell).doc
Скачиваний:
95
Добавлен:
18.05.2015
Размер:
1.12 Mб
Скачать

Как это все выглядит?

Наши новые столбцы появляются в конце списка в диалоге "Настройка cтолбцов":

Вот как выглядят столбцы. Файлы сортируются по заполненному нами столбцу Author.

Регистрация расширения оболочки

Так как наш обработчик расширяет возможности папок, он регистрируется под ключом HKCR\Folders. Вот секция для добавления к RGS файлу, который зарегистрирует наше расширение:

HKCR

{

NoRemove Folder

{

NoRemove Shellex

{

NoRemove ColumnHandlers

{

ForceRemove {AC146E80-3679-4BCA-9BE4-E36512573E6C} = s 'MP3 ID3v1 viewer column ext'

}

}

}

}

Еще одна полезная штучка - InfoTips

Другая интересная вещь, которую может делать наш обработчик - настраивать всплывающее описание, InfoTip, для файла заданного типа. Вот RGS-сценарий, который создает заказной InfoTip для MP3 файлов:

HKCR

{

NoRemove .mp3

{

val InfoTip = s 'prop:Type;Author;Title;Comment;{AC146E80-3679-4BCA-9BE4-E36512573E6C},0;{AC146E80-3679-4BCA-9BE4-E36512573E6C},1;{AC146E80-3679-4BCA-9BE4-E36512573E6C},2;Size'

}

}

Обратите внимание, что поля Author, Title, и Comment указаны в строке prop:. Когда Вы задерживаете курсор мыши над MP3 файлом, Проводник вызывает наше расширение, чтобы получить и показать строки из этих полей. Документация в MSDN утверждает, что наши заказные поля также могут появляться в InfoTips (именно поэтому наш GUID и идентификаторы свойств появились в вышеприведенной строке), однако, в Win2K это не работает. Только встроенные свойства появляются в InfoTips. Вот как выглядит InfoTip:

Пример 9 «Настройка иконок, отображаемых для файлов заданного типа» Файловые иконки в Проводнике

Все знают, что каждый тип файла представлен в Проводнике конкретной иконкой. BMP файлы показываются со значком "кисти в краске", HTML страницы - значком "страничка с логотипом IE" и т.д. Проводник определяет какую иконку использовать просматривая реестр и читая ключ под HKEY_CLASSES_ROOT, связанный с данным типом файлов. В результате использования этого метода одна иконка ассоциируется со всеми файлами конкретного типа.

Однако это не единственный путь для задания вида иконки. Проводник позволяет настраивать вид иконки от файла к файлу при помощи соответствующего расширения. Фактически такой пример уже встроен в Windows. Откройте в Проводнике каталог Windows (или любой другой каталог, содержащий много EXE файлов) и вы увидите, что каждый EXE файл имеет собственную иконку. (За исключением EXE файлов, ресурсы которых не содержат иконок. Для них генерируется одна общая иконка.)

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

- 8K или больше

- от 4K до 8K

- от 1 байта до 4K

- 0 байт

Использование AppWizard

Запустите AppWizard и создайте новый ATL COM проект. Назовем его TxtFileIcons. Щелкните ОК, чтобы перейти к первому (и единственному) диалогу мастера. Сохраните все установки по умолчанию и щелкните Finish. Теперь у нас есть пустой ATL проект, который построит DLL, но нам необходимо еще добавить наш COM объект-расширение. В дереве ClassView щелкните правой кнопкой мыши на пункте TxtFileIcons classes и укажите New ATL Object.

В мастере ATL Object на первой панели уже выбран Simple Object, поэтому просто щелкните Next. На второй панели в поле редактирования Short Name введите TxtIconShlExt и щелкните ОК (остальные поля заполнятся автоматически). Эти действия создадут класс CTxtIconShlExt, который содержит основной код для реализации COM объектов. Мы добавим наш код в этот класс.

Соседние файлы в папке ОСиСП - методички