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


Метод IContextMenu::InvokeCommand (shobjidl_core.h)

Выполняет команду, связанную с элементом контекстного меню.

Синтаксис

HRESULT InvokeCommand(
  CMINVOKECOMMANDINFO *pici
);

Параметры

pici

Тип: LPCMINVOKECOMMANDINFO

Указатель на структуру CMINVOKECOMMANDINFO или CMINVOKECOMMANDINFOEX , содержащую особенности команды.

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

Тип: HRESULT

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

Комментарии

Интерфейс IContextMenu экспортируется несколькими обработчиками расширений оболочки и расширениями пространства имен. Он используется для добавления команд в контекстные меню. Когда пользователь выбирает одну из команд, добавленных обработчиком или расширением пространства имен в контекстное меню, оболочка вызывает метод InvokeCommand этой команды. Команду можно указать с помощью смещения идентификатора меню, определенного при вызове IContextMenu::QueryContextMenu , или связанной с ней глаголом. Приложение может вызвать этот метод напрямую, получив указатель на интерфейс IContextMenu объекта. Приложение также может вызвать этот метод косвенно, вызвав ShellExecute или ShellExecuteEx и указав команду, поддерживаемую расширением пространства имен или обработчиком.

Примечание для пользователей

Хотя параметр pici объявлен в Shlobj.h как структура CMINVOKECOMMANDINFO , можно использовать CMINVOKECOMMANDINFO или CMINVOKECOMMANDINFOEX. Любой из этих вариантов будет работать для строк ANSI, но для строк Юникода необходимо использовать структуру CMINVOKECOMMANDINFOEX .

Примечания для разработчиков

Проверьте член cbSizepici , чтобы определить, какая структура (CMINVOKECOMMANDINFO или CMINVOKECOMMANDINFOEX) была передана. Если это структура CMINVOKECOMMANDINFOEX и член fMask имеет флаг CMIC_MASK_UNICODE , необходимо привести pici к CMINVOKECOMMANDINFOEX , чтобы использовать сведения Юникода, содержащиеся в последних пяти членах структуры.

Если команда, указанная каноническим именем команды или идентификатором команды, не распознается обработчиком контекстного меню, она должна вернуть ошибку (E_FAIL), чтобы команда могла быть передана другим обработчикам контекстного меню, которые могут ее реализовать.

В Windows Vista недостаточно асинхронного вызова команды, просто установив флаг CMIC_MASK_ASYNCOK в элементе fMask структуры CMINVOKECOMMANDINFO или CMINVOKECOMMANDINFOEX . Также необходимо задать ссылку на поток для вызывающего потока, как описано в разделе Управление ссылками на потоки.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header shobjidl_core.h (включая Shobjidl.h)
DLL Shell32.dll (версия 4.0 или более поздняя)

См. также раздел

IContextMenu