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

Регистрация расширения

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

HKCR

{

NoRemove *

{

NoRemove shellex

{

NoRemove PropertySheetHandlers

{

{3FCEF010-09A4-11D4-8D3B-D12F9D3D8B02}

}

}

}

}

Вы могли заметить, что GUID расширения сохранен здесь как имя ключа регистрации вместо строкового значения. Документация и книги, которые я просматривал, противоречат друг другу по поводу правильного обозначения, хотя во время моего беглого испытания оба варианта работали. Я решил идти по пути Dino Esposito ("Visual C++ Windows Shell Programming") и поместил GUID как имя ключа.

Пример 6 «Обработчик сбрасывания в меню Send To»

В этом примере показан тип расширения оболочки, который используется достаточно редко - обработчиком сбрасывания. Этот тип расширения может быть использован для добавления функции "перетащить и сбросить" к проводнику. При этом файл, на который осуществляется сбрасывание, определяет используемое расширение.

Обработчик сбрасывания

В примере 4обработчик перетаскивания, который загружается во время операции перетаскивания с помощью правой кнопки мыши. Проводник также позволяет нам написать расширение, которое будет загружаться при перетаскивании файлов левой кнопкой мыши. В этой операции расширение оперирует файлом, на который осуществляется сбрасывание. Например, WinZip содержит обработчик сбрасывания, который позволяет добавить файлы к архиву просто сбрасывая их на архив. Когда вы проносите файл над zip-архивом, проводник показывает, что этот архив является целью для сбрасывания, подсвечивая zip-файл и добавляя к курсору знак «+»:

Если бы обработчика сбрасывания не было, при перемещении файла над архивом ничего бы не произошло:

Обработчики сбрасывания действительно полезны только тогда, когда у вас есть свой тип файлов, как у WinZip. Намного интереснее с помощью обработчика сбрасывания добавить пункты к меню Send To. Меню Send To показывает содержимое меню \Windows\SendTo (в NT путь отличается для каждого пользователя). Обычно каталог Send To содержит ярлычки, но Microsoft Power Toys добавляет несколько других пунктов, как показано ниже:

Если вы не понимаете, причем здесь обработчики, взгляните на листинг каталога Send To:

12-02-98 0:27 129 3? Floppy (A).lnk

11-26-98 10:27 0 Any Folder....OtherFolder

11-26-98 10:27 0 Clipboard as Contents.ContentsOnClipboard

11-26-98 10:27 0 Clipboard as Name.NameOnClipboard

11-26-98 10:27 0 Command Line.CommandLine

03-26-99 8:42 0 Desktop (create shortcut).DeskLink

04-22-99 23:30 0 Norton Wipe Slack Space.WipeSlack

04-22-99 23:30 0 Norton WipeInfo.WipeInfo

11-26-98 10:26 285 Notepad.lnk

01-07-00 9:01 212 xfer directory on zip drive.lnk

Обратите внимание на странные расширения типа ".ContentsOnClipboard". Эти пустые файлы появятся как пункты в меню Send To, а их расширения прописаны в реестре. Это не обычные ассоциации, т.к. этим файлам не поставлены в соответствие действия типа «Открыть» или «Печатать». Их работа - обработка сбрасываний. Когда вы выбираете один из этих пунктов в меню Send To, проводник загружает соответствующий обработчик сбрасывания. Вот другой вид меню с выделенными обработчиками сбрасывания:

Демонстрационный проект этой статьи будет аналогом Send To Any Folder Powertoy - он скопирует или переместит файлы в любой каталог вашей системы.

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