Метод 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 или более поздняя) |