Поделиться через


Выбор метода статического или динамического контекстного меню

Этот раздел организован следующим образом:

Выбор метода глагола

Настоятельно рекомендуется реализовать контекстное меню с помощью одного из статических методов.

Методы статического глагола

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

Статический глагол Описание
CreateProcess с параметрами командной строки Это самый простой и наиболее знакомый способ реализации статического глагола. Процесс вызывается с помощью вызова функции CreateProcess с выбранными файлами и любыми необязательными параметрами, переданными в командной строке. Откроется файл или папка.
Этот метод имеет следующие ограничения:
  • Длина командной строки ограничена 2000 символами, что ограничивает количество элементов, которые может обрабатывать команда.
  • Можно использовать только с элементами файловой системы.
  • Не включает повторное использование уже запущенного процесса.
  • Требуется, чтобы исполняемый файл был установлен для обработки команды.

DropTarget/IDropTarget Активация функций на базе COM предполагает поддержку активации в процессе или вне процесса. DropTarget/IDropTarget также поддерживает повторное использование уже запущенного обработчика при реализации интерфейса IDropTarget локальным сервером. Он также прекрасно представляет элементы посредством маршалированных объектов данных и предоставляет ссылку на цепочку вызывающих сайтов, чтобы взаимодействовать с вызывающим объектом через QueryService.
Windows 7 и более поздних версий: IExecuteCommand Самый прямой метод реализации. Так как это COM-основанный метод вызова (например, DropTarget), данный интерфейс поддерживает инициализацию как внутри процесса (in-proc), так и вне процесса (внепроцессная активация). Глагол реализует IExecuteCommand и IObjectWithSelection, а также, при необходимости, IInitializeCommand. Элементы передаются непосредственно в виде массива элементов оболочки, а другие параметры вызывающего элемента доступны реализации команды, включая точку вызова, состояние клавиатуры и т. д.
Windows 7 и более поздние версии:ExplorerCommand/ IExplorerCommand Позволяет источникам данных, предоставляющим команды модуля команд с помощью IExplorerCommandProvider, использовать эти команды как глаголы в контекстном меню. Так как этот интерфейс поддерживает только активацию внутри процесса, его рекомендуется использовать источниками данных Оболочки, которым необходимо совместно использовать реализацию между командами и контекстными меню.

 

Примечание.

IExplorerCommand - это гибрид между статическим и динамическим глаголом. IExplorerCommand был объявлен в Windows Vista, но его возможность реализовать команду в контекстном меню является новой для Windows 7.

 

Дополнительные сведения о запросах IDropTarget и Shell для атрибутов сопоставления файлов см. в разделе "Предполагаемые типы" и "Регистрация приложений".

Предпочтительные методы динамических глаголов

Предпочтительны следующие методы динамических глаголов:

Тип глагола Описание
Статический глагол (указанный в предыдущей таблице) + расширенный синтаксис запросов (AQS) Этому выбору обеспечивается динамическая видимость глаголов.
Windows 7 и более поздних версий: IExplorerCommand Этот выбор позволяет общую реализацию глаголов и команд проводника, отображаемых в командном модуле проводника Windows.
Windows 7 и более поздних версий: IExplorerCommandState + статический глагол Этот выбор также обеспечивает динамическую видимость глаголов. Это гибридная модель, в которой простой обработчик в процессе используется для определения, должен ли быть отображен заданный статический глагол. Это можно применить ко всем методам реализации статических глаголов, чтобы добиться динамического поведения и минимизировать раскрытие внутрипроцессной логики. IExplorerCommandState имеет преимущество выполнения в фоновом потоке и тем самым избегает зависания пользовательского интерфейса. Это значительно проще, чем IContextMenu.

 

Нежелательные методы динамических глаголов

IContextMenu является самым мощным, но и самым сложным методом для реализации. Он основан на внутрипроцессных COM-объектах, которые выполняются в потоке вызывающего объекта, который обычно проводник Windows, но может быть любым приложением, в котором размещаются элементы. IContextMenu поддерживает видимость команд, их упорядочивание и настраиваемую визуализацию. Некоторые из этих функций были добавлены в функции статического глагола, такие как значок, который будет ассоциироваться с командой, и IExplorerCommand для работы с видимостью.

Если необходимо расширить контекстное меню для типа файла, зарегистрируя динамическую команду для типа файла, следуйте инструкциям, приведенным в разделе "Настройка контекстного меню с помощью динамических команд".

Расширение контекстного меню

После выбора метода команды можно расширить контекстное меню для типа файла, зарегистрируя статическую команду для типа файла. Дополнительные сведения см. в разделе "Создание обработчиков контекстного меню".

Поддержка методов Verb по операционной системе

Поддержка методов вызова глаголов операционной системой приведена в следующей таблице.

Метод Verb Windows XP Windows Vista Windows 7 и более поздние версии
CreateProcess X X X
Обмен динамическими данными (DDE) X X X
DropTarget X X X
Выполнить команду X X
ExplorerCommand X
ExplorerCommandState (Экс-плорерКоммандСтейт) X

 

Рекомендации по обработчикам контекстного меню и нескольким командам выбора

Создание обработчиков контекстного меню

Настройка контекстного меню с помощью динамических команд

Контекстные меню и обработчики контекстного меню

Справочник по контекстным меню

Глаголы и сопоставления файлов