Возможно ли использовать элемент управления .NET WebBrowser для использования IE9?
Я понимаю это раннее освобождение и нестабильность. Я бы не стал мечтать об замене элемента управления webbrowser по умолчанию для IE9 в любом другом проекте, но в этом случае мне особенно нужен IE9 для сравнения рядом с другими версиями.
Я хочу, чтобы элемент управления .NET WebBrowser использовал IE9 вместо стандартной версии IE на компьютере. У меня есть полный контроль над машиной, поэтому нет проблем с взломом системных файлов или любого другого, что может быть необходимо.
Обычно это может быть достигнуто путем установки обновления в IE, но в случае с IE9 он устанавливает отдельное приложение, оставив текущую версию IE незатронутой. Это означает, что элемент управления WebBrowser продолжает использовать текущую версию (что имеет смысл и является разумным шагом MS, поскольку IE9 все еще находится в разработке). Но в моем (крайнем) случае мне нужен элемент управления WebBrowser для использования IE9.
Можно ли внедрить IE9 в приложение форм .NET?
ИЗМЕНИТЬ
С помощью Справка Hans Passant Я получаю немного больше. Что-то очень интересное происходит в каталоге файлов prog файлов IE9. Там каталог под названием "iepreview.exe.local", который при удалении делает приложение IE9 Preview использующим IE8 (проверил его с помощью теста acid3).
Не совсем то, что я хочу, но мне интересно, если это какая-то переадресация, которую я мог бы использовать для своих нужд.
РЕДАКТИРОВАТЬ 2
Я попробовал применить .local взломать как мою копию iexplore.exe, так и мое .NET-приложение, и я заметил что-то еще интересное - оба приложения начали использовать IE7 вместо IE8 ( моя версия IE) или IE9.
Может ли это быть iexplore, пытаясь использовать IE9, а затем вернуться на IE7? Кажется странным, что даже IE7 будет доступен, но что пользовательская строка начинает использовать.
Ответы
Ответ 1
Единственный способ, которым IE9 может устанавливать бок о бок, - это когда он использует новые GUID для интерфейсов и классов. Это означает, что вы не можете использовать WebBrowser, он имеет жесткие коды GUID.
Есть еще одна опция, использующая обертку AxHost. Щелкните правой кнопкой мыши панель инструментов, выберите "Элементы", выберите вкладку "Компоненты COM" и найдите IE9 в списке. Не знаю, как это можно было бы назвать, старым именем был "Microsoft Web Browser", обслуживаемый c:\windows\system32\ieframe.dll
Вам придется обойтись без дружественных классов оболочки WebBrowser и HtmlDocument.
Ответ 2
На самом деле вы можете изменить свой реестр, чтобы заставить вашу программу использовать рендеринг IE9. Перейдите в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION и добавьте новое значение DWORD с именем вашей программы (с .exe) и значением decimal, установленным в 9999.
Вы также можете изменить свой реестр, чтобы заставить вашу программу использовать рендеринг GPU в IE9. Перейдите в HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_GPU_RENDERING и добавьте новое значение DWORD с именем вашей программы (с .exe) и значением шестнадцатеричное, установленным в 1.
ЭТО ТОЛЬКО РАБОТАЕТ, ЕСЛИ У ВАС ЕСТЬ ИЕ9! Вы должны сначала загрузить IE9, прежде чем это сделать, или не будет работать.
Если вы хотите отображать страницы с IE8, просто измените 9999 на 8888.
Примечание. Графический рендеринг доступен только в IE9
Ответ 3
После большого количества Google-сообщений я обнаружил, что для FEATURE_BROWSER_EMULATION существует два разных набора ключей для 32-битных и 64-разрядных приложений. Вы должны установить свое место в нужном месте в зависимости от используемого вами компьютера. Также вам нужно убедиться, что вы установите правильную версию браузера, который хотите подражать.
32 бит:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\**FEATURE_BROWSER_EMULATION**
Value Key: (DWORD) yourapplication.exe
64 бит:
HKEY_LOCAL_MACHINE\SOFTWARE\**Wow6432Node**\Microsoft\Internet Explorer\MAIN\FeatureControl\**FEATURE_BROWSER_EMULATION**
Value Key: (DWORD) yourapplication.exe
Значение для установки этого ключа (взято из MSDN здесь) в виде десятичных значений:
9999 (0x270F)
Internet Explorer 9. Веб-страницы отображаются в режиме стандартов IE9 независимо от директивы! DOCTYPE.
9000 (0x2328)
Internet Explorer 9. Веб-страницы, содержащие стандартизованные! Директивы DOCTYPE отображаются в режиме IE9.
8888 (0x22B8)
Веб-страницы отображаются в режиме стандартов IE8 независимо от директивы! DOCTYPE.
8000 (0x1F40)
Веб-страницы, содержащие основанные на стандартах! Директивы DOCTYPE отображаются в режиме IE8.
7000 (0x1B58)
Веб-страницы, содержащие основанные на стандартах! Директивы DOCTYPE отображаются в режиме стандартов IE7.