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


Метод IAssocHandler::Invoke (shobjidl_core.h)

Напрямую вызывает связанный обработчик.

Синтаксис

HRESULT Invoke(
  [in] IDataObject *pdo
);

Параметры

[in] pdo

Тип: IDataObject*

Указатель на объект IDataObject , представляющий выбранный элемент, для которого необходимо вызвать обработчик. Обратите внимание, что не следует вызывать IAssocHandler::Invoke с выделением нескольких элементов. Если у вас несколько элементов, вызовите вместо него метод IAssocHandler::CreateInvoker . Дополнительные сведения см. в разделе Примечания.

Возвращаемое значение

Тип: HRESULT

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Объекты IAssocHandler обычно используются для заполнения меню Открыть с помощью. Если выбран один из этих пунктов меню, этот метод вызывается для запуска выбранного приложения.

Вызов и CreateInvoker

IDataObject, используемый этими методами, может представлять либо один файл, либо несколько файлов. Не все приложения поддерживают параметр с несколькими файлами. Приложения, поддерживающие этот сценарий, могут накладывать другие ограничения, такие как количество файлов, которые могут быть одновременно открыты, или приемлемое сочетание типов файлов.

Поэтому приложение часто должно определить, поддерживает ли обработчик выбор, прежде чем пытаться вызвать обработчик. Например, приложение может включить пункт меню только в том случае, если оно убедилось, что соответствующий выбор поддерживается этим обработчиком.

Как правило, можно предположить, что приложение будет поддерживать вызов для одного элемента, и в таких случаях приложение обычно вызывает IAssocHandler::Invoke на основе этого предположения.

Однако в нескольких сценариях выбора приложение должно вызывать IAssocHandler::CreateInvoker. Этот метод извлекает объект IAssocHandlerInvoker, который позволяет вызывающей приложению сначала проверка, поддерживается ли выбор (SupportsSelection), а затем вызвать обработчик (Invoke).

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

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header shobjidl_core.h (включая Shobjidl.h)