Здравствуйте, Аноним, Вы писали:
А>При подключении к событиям я исп. в IConnectionPointContainer GUID_IID интерфейса DWebBrowserEvent2, соответственно и ITypeInfo беру с тем же GUID_IID
DWebBrowserEvent2 — это чистый диспинтерфейс. Он не имеет таблицы функций (как другие интерфейсы — не-диспинтерфейсы), а также не имеет данных, доступных через указатель.
Каким же образом ITypeInfo-объект поможет тебе в обработке запроса?
Только вызвав p->IDispatch::Invoke(...), передав туда все свои параметры, чтобы этот твой Invoke вызвал соответствующую функцию. Но, как правило, DispInvoke вызывается в обработчике IDispatch::Invoke, то, и это разумно, на чистых диспинтерфейсах он возвращает ошибку. Иначе будет бесконечный цикл, не так ли?
Что делать? Реализовывать обработчик по-другому, не через DispInvoke. По-моему, есть какие-то Wizard-ы Студии по реализации таких интерфейсов.