Как мне сделать 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 действительно не должен сильно отличаться в этом отношении.

Другие вопросы по тегам