IE9 RC аварийно завершает работу при вызове IDispatch:: Invoke
У меня есть рабочий код, который работает на IE6,7,8 & 9 Beta но падает на IE9 RC. Я вижу, что веб-страница успешно использует интерфейс ActiveX, но когда я пытаюсь вызвать IDispatch:: Invoke из ActiveX, ActiveX аварийно завершает работу.
Мое приложение построено из CHtmlView (IE container) веб-страницы (GUI) и ActiveX (само приложение), я вижу, что веб-страница успешно использует интерфейс ActiveX, но когда я пытаюсь отправить данные обратно на веб-страницу Я падаю.
После отладки кода (vs2005 c++) я обнаружил, что все функции IDispatch вызывают сбой, но это поведение воспроизводится только с версией RC, наш продукт уже работает около 3 лет без проблем, и теперь каждый клиент, обновляющийся до RC, больше не может использовать наш продукт.
Были ли какие-либо изменения, которые могут вызвать такое поведение? по документам в Интернете я ничего не нашел. Спасибо.
2 ответа:
IE9RC ввел фильтрацию ActiveX:
Internet Explorer 9 RC позволяет блокировать элементы ActiveX для всех сайты, а затем снова включите их только для тех сайтов, которым Вы доверяете новый параметр фильтрации ActiveX.
После утомительной борьбы я нашел ответ (2 года назад). Тогда я закрыл вопросы на форуме IE9, но забыл закрыть эту тему.
Спасибо @ Paul Sweat за напоминание.
Наша структура работала следующим образом:
Activex и web имели набор известных строк, таких как:" onStart"," onPause " и т. д...
- веб зарегистрирует эту функцию в движке.
- activex вызовет обратный вызов при необходимости
Во-вторых, проблема заключалась в том, что в старых версиях IE функция JavaScript eval создавала объекты IDispatch, и вы могли передавать объекты в activex.
В IE9 наряду со многими другими изменениями это тоже изменилось, и eval вернет что-то еще.
Давка произойдет, когда activex попытается выполнить обратный вызов. Это было... Очень трудно отладить.