Структура CMINVOKECOMMANDINFO (shobjidl_core.h)

Содержит сведения, необходимые IContextMenu::InvokeCommand для вызова команды контекстного меню.

Синтаксис

typedef struct _CMINVOKECOMMANDINFO {
  DWORD  cbSize;
  DWORD  fMask;
  HWND   hwnd;
  LPCSTR lpVerb;
  LPCSTR lpParameters;
  LPCSTR lpDirectory;
  int    nShow;
  DWORD  dwHotKey;
  HANDLE hIcon;
} CMINVOKECOMMANDINFO;

Члены

cbSize

Тип: DWORD

Размер этой структуры в байтах.

fMask

Тип: DWORD

Ноль или один или несколько следующих флагов.

CMIC_MASK_HOTKEY

Член dwHotKey является допустимым.

CMIC_MASK_ICON

Член hIcon является допустимым. В Windows Vista этот флаг не используется.

CMIC_MASK_FLAG_NO_UI

Система не может отображать элементы пользовательского интерфейса (например, сообщения об ошибках) при выполнении команды.

CMIC_MASK_NO_CONSOLE

Если обработчик контекстного меню должен создать новый процесс, обычно он создает новую консоль. Установка флага CMIC_MASK_NO_CONSOLE запрещает создание новой консоли.

CMIC_MASK_FLAG_SEP_VDM

Этот флаг действителен только при ссылке на 16-разрядное приложение windows. Если этот параметр задан, приложение, на которое указывает ярлык, выполняется на частной виртуальной машине DOS (VDM). См. заметки.

CMIC_MASK_ASYNCOK

Дождитесь завершения диалога DDE, прежде чем вернуться.

CMIC_MASK_NOASYNC

Windows Vista и более поздних версий. Реализация IContextMenu::InvokeCommand должна быть синхронной, а не возвращать ее до завершения. Так как это рекомендуется, вызов приложений, указывающих этот флаг, не может гарантировать, что этот запрос будет выполнен, если они не знакомы с реализацией вызываемой команды.

CMIC_MASK_SHIFT_DOWN

Нажата клавиша SHIFT. Используйте его вместо опроса текущего состояния клавиатуры, которое могло измениться с момента вызова глагола.

CMIC_MASK_CONTROL_DOWN

Нажата клавиша CTRL. Используйте его вместо опроса текущего состояния клавиатуры, которое могло измениться с момента вызова глагола.

CMIC_MASK_FLAG_LOG_USAGE

Указывает, что реализации IContextMenu::InvokeCommand может потребоваться отслеживать вызываемый элемент для таких функций, как меню "Последние документы".

CMIC_MASK_NOZONECHECKS

Не выполняйте проверка зоны. Этот флаг позволяет ShellExecuteEx обходить проверку зоны, введенную IAttachmentExecute.

hwnd

Тип: HWND

Дескриптор окна, являющегося владельцем контекстного меню. Расширение также может использовать этот дескриптор в качестве владельца любых отображаемых окон сообщений или диалоговых окон.

lpVerb

Тип: LPCSTR

Адрес строки, заканчивающейся null, которая указывает независимое от языка имя выполняемой команды. Этот член обычно является строкой, когда команда активируется приложением. Система предоставляет предопределенные значения констант для следующих командных строк.

Константа Командная строка
CMDSTR_RUNAS "RunAs"
CMDSTR_PRINT "Печать"
CMDSTR_PREVIEW "Предварительная версия"
CMDSTR_OPEN "Открыть"
 

Это не фиксированный набор; Обработчики контекстного меню могут придумать новые канонические команды, а приложения могут вызывать их.

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

Кроме того, вместо указателя этот параметр может иметь значение MAKEINTRESOURCE(offset), где offset — это смещение идентификатора меню выполняемой команды. Реализации могут использовать макрос IS_INTRESOURCE для обнаружения использования этой альтернативы. Оболочка использует эту альтернативу, когда пользователь выбирает команду меню.

lpParameters

Тип: LPCSTR

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

lpDirectory

Тип: LPCSTR

Необязательное имя рабочего каталога. Этот элемент всегда имеет значение NULL для пунктов меню, вставленных расширением оболочки.

nShow

Тип: int

Набор SW_ значений для передачи в функцию ShowWindow , если команда отображает окно или запускает приложение.

dwHotKey

Тип: DWORD

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

hIcon

Тип: HANDLE

Значок, используемый для любого приложения, активированного командой . Если элемент fMask не указывает CMIC_MASK_ICON, этот элемент игнорируется.

Комментарии

Хотя объявление IContextMenu::InvokeCommand задает структуру CMINVOKECOMMANDINFO для параметра pici , оно также может принимать структуру CMINVOKECOMMANDINFOEX . При реализации этого метода необходимо проверить cbSize , чтобы определить, какая структура была передана.

Требования

   
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть shobjidl_core.h (включая Shobjidl.h)