Вопрос

Есть код:

var 
myobject: OleVariant;
begin
 myobject := CreateOleObject('SomeNamespace.SomeClass');
end;

Этот COM объект имеет события (например, OnClick). Как я должен подключиться к этим событиям без импорта TLB?

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

Решение

Вы работаете с COM поздним привязкой, поэтому вам нужно написать много кода для обработки событий. Эта задача не сложна, если вы знаете COM, в основном вам необходимо выполнить следующие шаги.

  • Создать новый объект (класс), полученный из TInterfacedObject это орудияIDispatch
  • реализовать Invoke() Функция вашего нового класса
  • Запрос для контейнера для точек подключения (IConnectionpointContainer) и желаемая точка соединения.
  • раковина точка соединения, используя IConnectionPointContainer.FindConnectionPoint
  • Наконец выполнить IConnectionPoint.Advise() используя вашу реализацию IDispatch

Вы можете найти примеры этой реализации по этим ссылкам

Попробуйте эти ссылки для получения дополнительной информации о COM, поздних связывающих и событиях

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