Как мне сделать ConnectionPoint в Delphi?
Я пишу DLL, которая общается с Excel через интерфейс IDispatch. Из VBA я перехожу в вариант, содержащий Application.Caller
из которого я рисую указатель IDispatch через .pDispVal
,
То, что я хотел бы знать, это как запросить интерфейс через этот указатель IDispatch. Я хочу настроить контейнер точки подключения и оттуда найти точку подключения к Excel. Конечная цель состоит в том, чтобы связать вещи с событием Calculate в Excel и иметь возможность манипулировать данными Excel.
2 ответа
Я бы порекомендовал великолепные вневременные (Delphi) COM-учебники Бин Ли на http://www.techvanguards.com/ которые включают главы, полностью посвященные IConnectionPoint
и связанные механизмы.
Он также предлагает бесплатный инструмент для генерации кода EventSink.
Тем не менее, у меня есть сильное чувство, что это вообще не нужно, если все, что вы хотите сделать, это отреагировать на событие, вызванное Excel Application
объект. Вы пробовали просто использовать объекты-обертки, которые сгенерировал для вас импортер Delphi Type Library? Конечно, вы также можете написать свои собственные обертки.
С другой стороны, я на самом деле еще не написал никаких надстроек для Excel - но я пишу надстройки для Outlook и Word для жизни, и Excel действительно не должен сильно отличаться в этом отношении.
Брайан Лонг объясняет: http://www.blong.com/Conferences/IConUK2000/DelphiMoreAutomation/More%20Automation%20In%20Delphi.htm
Другие источники: