IE11 BHO: замена объектов ActiveX в HTML-документе

Я разрабатываю BHO, в настоящее время в IE11, который заменяет определенные объекты ActiveX в документе путем поиска тега <object> с определенным CLSID.

Я изучил обработку события OnDocumentComplete, поиск всех тегов «объект», используя стандартные интерфейсы HTML, и успешно заменил их; Я проверил в DOM Explorer, и там есть новые CLSID.

Теперь у этого подхода есть важный недостаток, который делает его нефункциональным. Когда я получаю событие OnDocumentComplete, браузер уже создает экземпляры DLL, указанные CLSID в документе, что делает новые CLSID, которые я заменил, совершенно бесполезными.

Я думаю, это связано с тем, что загрузка ActiveX происходит сразу после загрузки документа (то есть ReadyState = 2), в то время как я получаю событие OnDocumentComplete с ReadyState = 4.

Кто-нибудь знает, достижима ли такая «замена объекта ActiveX» с использованием стандартных интерфейсов IE? Я использую С++.


person Hernán    schedule 02.03.2015    source источник


Ответы (1)


Если я вас понимаю, вы пытаетесь заменить один конкретный элемент управления ActiveX другим конкретным элементом управления ActiveX на основе ClSID? Если это так, рассматривали ли вы возможность использования Феникс?

Надеюсь это поможет...

-- Ланс

person Lance Leonard    schedule 02.03.2015
comment
Большое спасибо Ланс, очень интересная информация. Однако, если быть более точным, мне нужно сделать это для каждого HTML-документа (он зависит от URL-адреса), а не глобально. - person Hernán; 03.03.2015
comment
Я не знаю ни одного сервиса, который позволил бы перехватить документ на лету, хотя и с учетом количества доступных интерфейсов (msdn.microsoft.com/en-us/library/jj206442(v=vs.85).aspx) имеет смысл, что может существовать. Однако, учитывая отсутствие в последнее время внимания к стороне C++ платформы, кажется разумным думать, что дела отходят от этого направления. Возможно, изменить исходный код для использования альтернативного CLSID с помощью Powershell или других утилит, подобных grep? Я полагаю, что перехват/перезапись прокси-сервера также может сработать, но это выходит за рамки моих скудных навыков. - person Lance Leonard; 03.03.2015