Автор Тема: OLE/ActiveX Server в VB6  (Прочитано 1029 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн strvl

  • Коллежский регистратор
  • *
  • Сообщений: 16
  • Репутация: 0
OLE/ActiveX Server в VB6
« : °ЯаХЫм 30, 2009, 02:37:19 pm »
Здравствуйте!
Очень интересует такой вопрос: возможно ли в Visual Basic 6.0 создание внедряемого объекта (insertable object) (любым способом – через OLE сервер или ActiveX документ)? (Примитивно говоря, сделать такой компонент, который можно было бы создать через меню Вставка - Объект, например, в документе Word, таблице Excel, или в каком-либо другом приложении аналогичным образом).

Как я понял, нужно смотреть в сторону ActiveX Document. VB 6 позволяет создавать ActiveX’ы, содержащие User Document. Но насколько я понял, эти «User Document» годятся только для внедрения в IE и MS Binder.

Пытался поставить эксперимент – сделал пробный ActiveX EXE с User Document’ом и предпринял попытку внедрить его в OLE контейнер. В диалоге «Создать объект» новоиспеченного документа не было в списке (несмотря на то, что в реестре ему был приписан параметр Insertable) – тогда я попытался создать его через функцию CreateEmbed. Получилось! Объект создается и функционирует, но не активируется (при двойном нажатии выдается «Unexpected error» и активация не выполняется). Очевидно, нужно определять для этого документа определенный интерфейс, но вот какой?

P. S. Кстати, экспериментально выяснилось, что в OLE контейнер вполне нормально внедряется ActiveX компонент и полноценно в нем работает. Правда, почему-то он всегда активен (обычно, чтобы работать с содержимым OLE контейнера его нужно активизировать (чаще всего двойным нажатием мыши))