Здравствуйте и спасибо за поиск.
Описание проблемы:
Я реализовал приложение c # WinForm со встроенным элементом управления браузером и внедрил IInternetSecurityManager для выполнения задач, которые нам нужны, чтобы разрешить междоменный доступ в фреймах с нашими локально установленными веб-страницами.
Все работает как положено с IInternetSecurityManager, IOleClientSite, IDocHostShowUI и IDocHostUIHandler. Другими словами, браузер вызывает нас для всех наших реализаций.
Проблема в том, что на веб-странице, загруженной в элемент управления браузера, есть скрипт, который вызывает window.showModalDialog (): используемый экземпляр элемента управления обозревателем больше не связывается с нашим клиентским сайтом. Абсолютно никакие вызовы QueryInterface или любые другие методы не вызываются ни в одном из интерфейсов, упомянутых выше.
Документ в диалоговом окне не использует реализацию нашего менеджера безопасности, я предполагаю, потому что элемент управления веб-браузером в диалоговом окне, отображаемом IE, отличается от того, который мы называли SetClientSite ().
Вопрос:
Как мы общаемся с этим новым браузером? Нам нужно предоставить браузеру возможность управления в диалоговом окне, отображаемом IE, нашей реализацией IInternetSecurityManager. Но мы так и не получили возможность рассказать об этом нашему клиентскому сайту, так сказать. Другими словами, IE не сообщает нам об этом через интерфейс, который говорит: «Я - новый элемент управления браузером, созданный IE, и вот мой интерфейс IUnknown. Это ваш шанс настроить мой клиентский сайт и т. Д.» Мы были бы счастливы, если бы пришло такое уведомление от IE.
В результате используются два разных контекста безопасности, и наше приложение перестает работать каждый раз, когда мы в диалоге используем iframe, потому что наша реализация IInternetSecurityManager не используется.
Пример исходного кода:
Я выбрал исходный код для защиты невинных людей :) и сократил до того, что, как мне кажется, вы можете работать в его собственном решении Visual Studio 2010.
Пожалуйста, прочитайте файл ReadMe.txt для получения информации о проблеме, действиях по воспроизведению и т. Д.
На тестовых веб-страницах, которые я написал, отображаются информация и инструкции по использованию образца.
Пожалуйста, дайте мне знать, если у вас есть вопросы о том, что я пытаюсь выполнить, или если образец недостаточно ясен.
Пожалуйста, сообщите. Спасибо.
http://home.comcast.net/~lowrider2112/bin/TestIEHost.rar