Вопрос

Я пишу DLL, которая взаимодействует с Excel через интерфейс IDispatch.Из VBA я передаю вариант, содержащий Application.Caller из которого я рисую указатель IDispatch через .pDispVal.

Я хотел бы знать, как запросить интерфейс через этот указатель IDispatch.Я хочу настроить контейнер точки подключения и оттуда найти точку подключения к Excel.Конечная цель — связать все с событием Excel Calculate и иметь возможность манипулировать данными Excel.

Это было полезно?

Решение

Я бы порекомендовал беспрецедентно превосходные учебные пособия по COM (Delphi) от Binh Ly на сайте http://www.techvanguards.com/ который включает главы, полностью посвященные IConnectionPoint и соответствующие механизмы.

Он также предлагает бесплатный инструмент для генерации кода EventSink.

Тем не менее, у меня есть стойкое ощущение, что в этом вообще нет необходимости, если все, что вы хотите сделать, это отреагировать на событие, инициированное Excel. Application объект.Пробовали ли вы просто использовать объекты-оболочки, которые создает для вас импортер библиотеки типов Delphi?Вы, конечно, также можете написать свои собственные оболочки.

Опять же, на самом деле я еще не писал никаких надстроек для Excel, но я пишу надстройки для Outlook и Word, и Excel действительно не должен сильно отличаться в этом отношении.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top