2009-02-17 3 views
1

Я написал плагин Firefox (совместим только с FF3 atm), который позволяет размещать элементы управления ActiveX.
Прежде, чем начнется пылание - это не основная тема для этого вопроса, и плагин был разработан с учетом безопасности, поэтому он не разбивает мой любимый браузер. если вы заинтересованы, он размещен по адресу http://code.google.com/p/ff-activex-host/.Событие OnReadyStateChange в элементах ActiveX

Теперь я заметил, что в IE все элементы управления ActiveX имеют событие OnReadyStateChange, однако не все элементы ActiveX имеют это событие, указанное в их TypeLib. В результате мой плагин не может регистрировать обработчики для этого события для каждого элемента управления ActiveX.

Открытие таких элементов управления с помощью OleView, я также не могу найти событие OnReadyStateChange - заставляя меня думать, что IE может быть «обманывать» здесь, чтобы заставить его работать. Когда OleView показывает такой обработчик (как и с элементом управления Shockwave ActiveX), у меня нет проблем с регистрацией обработчиков.

Примером такого контроля может служить ActiveX для служб терминалов Microsoft. Но это не проблема, ограниченная элементами управления MS ActiveX.

Я не эксперт в COM-объектах, я искал событие неправильным образом или не в том месте?
Прямо сейчас я думаю, что я делаю это правильно, так как OleView тоже не может найти его, поэтому ...

Могу ли я как-то «обмануть» то же самое, как IE делает и делает это событие доступным в любом случае?

ответ

2

Да, IE будет обманывать. То, что вы на самом деле имеете в IE, - это то, что в мире COM мы называем совокупный объект. IE создаст экземпляр класса COM, который он использует для представления объектов ActiveX, и будет агрегировать это с фактическим экземпляром класса ActiveX, создавая составной объект.

Этот композит представляет собой единственный объект с новыми функциями.

Следовательно, я не думаю, что вам нужно беспокоиться о OnReadyStateChange.

+0

Спасибо! Я также был бы признателен, если бы вы могли указать мне в общем направлении того, что мне нужно было бы сделать, чтобы реализовать такой агрегат. Трудно найти что-либо в msdn, если у вас нет имени API-интерфейса для начала. –

+0

См. Http://support.microsoft.com/kb/173823. – AnthonyWJones

Смежные вопросы