Я написал плагин Firefox (совместимый только с банкоматом FF3), который позволяет размещать элементы управления ActiveX.
До того, как начинается пламя - это не главная тема для этого вопроса, и плагин был разработан с учетом безопасности, чтобы он не сломал мой любимый браузер. если вы заинтересованы, он размещен на http://code.google.com/p/ff-activex-host/.
Теперь я заметил, что в IE все элементы управления ActiveX имеют доступное событие OnReadyStateChange, однако не у всех элементов управления ActiveX это событие указано в их TypeLib. В результате мой плагин не может зарегистрировать обработчики для этого события для каждого элемента управления ActiveX.
Открывая такие элементы управления с помощью OleView, я также не могу найти событие OnReadyStateChange, что наводит меня на мысль, что IE может «обманывать», чтобы заставить его работать. Когда OleView показывает такой обработчик (как с элементом управления Shockwave ActiveX), у меня нет проблем с регистрацией обработчиков для него.
Примером такого элемента управления является Microsoft Terminal Services ActiveX. Но это не проблема, ограниченная элементами управления MS ActiveX.
Я не эксперт по COM-объектам, я ищу событие неправильно или в неправильном месте?
Прямо сейчас я думаю, что все делаю правильно, поскольку OleView тоже не может его найти, так что ...
Могу ли я как-то «обмануть» так же, как это делает IE, и сделать это событие доступным?