24, Nov, 2024
7 Views
Comments Off on Расширения оболочки Windows – обработчики контекстных меню
0 0

Расширения оболочки Windows – обработчики контекстных меню

Written by

У оболочки (shell) Windows есть полезная особенность: ее можно дополнять расширенными возможностями. Для этого предназначены так называемые расширения оболочки (shell extensions), которые вызываются в ответ на определенные события в системе. Все расширения оболочки (далее обработчики) реализуются в виде внутренних СОМ-серверов.
Обработчиков существует довольно много; их точное количество зависит от версии оболочки Windows. Вот некоторые из них:
• Обработчики контекстных меню – позволяют добавлять новые пункты в контекстное меню файловых объектов оболочки. Доступны начиная с Windows 95.
• Обработчики перемещений -реализуются интерфейсом ICopyHook. Эти обработчики позволяют получать и контролировать некоторые файловые операции, применимые только к лапкам и принтерам. Доступны начиная с Windows 95.
• Обработчики перетаскивания правой кнопкой мыши – реализуются, как и обработчики контекстных меню, двумя интерфейсами IContextMenu и IShellExtlnit, но они добавляют новый пункт в контекстное меню, которое появляется при перетаскивании файлового объекта в новое место с помощью правой кнопки мыши. Доступны начиная с Windows 95.
• Обработчики страниц свойств -реализуются интерфейсами IShellPropSheetExt и IShellExtlnit. Позволяют добавлять новые страницы в диалоговые окна свойств файлов. Доступны начиная с Windows 95.
• Обработчики пиктограмм – реализуются интерфейсами lExtractlcon и IPersistFile. Этот обработчик позволяет присваи
вать одному типу файлов различные пиктограммы. Доступны начиная с Windows 95.
• Обработчики цели – реализуются интерфейсами IDropTarget и IPersistFile. Определяют действия оболочки при перетаскивании одного объекта оболочки на другой. Доступны начиная с Windows 95.
• Обработчики буфера обмена — реализуются интерфейсами IDataObject и IPersistFile. Позволяют определить, каким образом объект помещается в буфер обмена и извлекается из него. Доступны начиная с Windows 95.
• Обработчики всплывающих подсказок – реализуются интерфейсами IQuerylnfo и IPersistFile. Они позволяют выводить подсказки, когда курсор мыши находится над определенным файловым объектом. Доступны начиная с Windows 98 (Active Desktop).
• Обработчики запуска программ – реализуются интерфейсом IShellExecuteHook. Эти обработчики позволяют перехватывать запуск программ из оболочки. Доступны начиная с Windows 98 (Active Desktop).
• Обработчики колонок Проводника – реализуются интерфейсом IColumnProvider. Благодаря этим обработчикам можно добавлять новые колонки в Проводнике в режиме отображения Таблицы (Details). Доступны начиная с Windows 2000.
• Обработчики собственных пиктограмм – реализованы интерфейсом IShelllconOverlay. В отличие от обработчиков пиктограмм, эти обработчики позволяют указывать собственные изображения, которые будут использоваться как пиктограммы. Доступны начиная с Windows 2000.
• Обработчики поиска – реализованы интерфейсом IContextMenu. Эти обработчики, как видно из названия интерфейса, добавляют новый пункт в меню, подобно обработчикам контекстного меню или перемещения. Отличие в том, что они расширяют меню «Найти», которое находится в кнопке Пуск. Доступны начиная с Windows 2000.
• Обработчики Менеджера очистки – реализованы интерфейсом I Empty VolumeCache2. При помощи этих обработчиков можно добавлять новые ячейки в Менеджер очистки для восстановления дискового пространства. Доступны начиная с Windows 2000.
В этой статье мы рассмотрим только обработчики контекстных меню. Работа с другими shell extensions в общем похожа. И еще: хочу сразу оговорить, что приведенные в статье фрагменты кода -на Delphi.
Обработчики контекстных меню – взгляд изнутри
Как я уже говорил, обработчики контекстного меню позволяют добавлять в меню любые необходимые команды для определенного типа файла. На рисунке приведен пример такого контекстного меню, где WinZip добавил свои пункты Add to Zip и Add to readme.zip.

Работа обработчиков контекстных меню реализуется с помощью интерфейсов IContextMenu и IShellExtlnit. Как уже было сказано, это расширение оболочки является внутренним COM-сервером (как и другие обработчики), то есть обыкновенной динамически подключаемой библиотекой (Dynamic Link Library), экспортирующей необходимые методы, как ActiveX-элемент управления. Работу этого обработчика мы рассмотрим на примере добавления в контекстное меню файлов типа Delphi Project (.dpr) команды их компиляции.
Расширение оболочки должно быть не просто внутренним СОМ-сервером. Оно должно еще поддерживать интерфейс, специфичный для данного обработчика, ин
терфейс, поддерживающий его инициализацию, а также, чтобы иметь возможность быть выполненным Проводником, обработчик должен быть зарегистрирован в системном реестре Windows.

Article Tags:
·
Article Categories:
Windows

Comments are closed.