Как мне использовать ConnectionPoint в Delphi?
-
21-08-2019 - |
Вопрос
Я пишу 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 действительно не должен сильно отличаться в этом отношении.
Другие советы