Как мне сделать ConnectionPoint в Delphi?

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

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

11.12.2008 09:38:25
Преимущественно ссылка Бин Ли.
bugmagnet 12.12.2008 02:17:57
Будучи немного новичком в Delphi (в некоторых отношениях) я все еще немного в темноте, но в конце туннеля есть свет, и я уверен, что это не фара быстро приближающегося поезда ,
bugmagnet 12.12.2008 02:19:05
Да, уроки Бин раньше были откровением обо всех вещах COM для меня тоже, около восьми лет назад ...
Oliver Giesen 12.12.2008 07:12:47
Кстати: когда вы говорите о «DLL, которая общается с Excel», это на самом деле COM-сервер или вы как-то используете экспортированные функции, которые вы вызываете из VBA? У меня все еще есть ощущение, что вам было бы лучше, если бы все это было реализовано как обычное дополнение, возможно, отказавшись от VBA.
Oliver Giesen 12.12.2008 07:15:50
Проблема в том, чтобы сделать в Delphi то, что уже было сделано в C ++ Гербертом Данлером с его надстройкой excelmvf < excelmvf.sourceforge.net >. Как только вы это увидели, скажите мне, можете ли вы все-таки отказаться от VBA.
bugmagnet 13.12.2008 03:05:47
2 ОТВЕТА
РЕШЕНИЕ

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

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

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

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

1
11.12.2008 23:40:21
Эта третья статья, gtro, очень хорошо освещает проблему.
bugmagnet 11.12.2008 12:17:57