| Предыдущий | Следующий |
| OLEOBJ_E_NOVERBS | INPLACE_E_NOTUNDOABLE |
OLEOBJ_E_INVALIDVERB
Что означает OLEOBJ_E_INVALIDVERB
OLEOBJ_E_INVALIDVERB (0x80040181) означает, что выбранный OLE verb недопустим для объекта. Ошибка относится к конкретной команде активации, переданной в IOleObject::DoVerb, а не к отсутствию всех verbs.
Практическая диагностика
Сохраните lVerb, CLSID объекта, текущий результат IOleObject::EnumVerbs, источник команды в UI и состояние активации. Кэшированный положительный ID может перестать быть допустимым после смены класса или версии OLE-сервера.
- Проверьте, что
lVerbприсутствует в актуальном перечислении либо является поддерживаемым стандартным OLE verb. - Не переносите private verb ID между разными классами объектов и версиями сервера.
- Отделите этот код от
OLEOBJ_E_NOVERBS: там объект вообще не предоставляет набор команд.
Как исправить
Перестройте меню или команду активации из текущего EnumVerbs и передавайте в DoVerb только допустимый verb. Повтор имеет смысл после обновления объекта или списка verbs, а не с тем же заведомо неверным ID.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
