2010-07-27 2 views
14

Я понимаю, что это раннее освобождение и неустойчивость. Я бы не стал мечтать о замене элемента управления webbrowser по умолчанию для IE9 в любом другом проекте, но в этом случае мне особенно нужен IE9 для сравнения рядом с другими версиями.Возможно ли использовать элемент управления .NET WebBrowser для использования IE9?

Я бы хотел, чтобы элемент управления .NET WebBrowser использовал IE9 вместо стандартной версии IE на компьютере. У меня есть полный контроль над машиной, поэтому нет проблем взломать системные файлы или что-то еще, что может понадобиться.

Обычно это может быть достигнуто путем установки обновления в IE, но в случае с IE9 он устанавливает отдельное приложение, оставив текущую версию IE незатронутой. Это означает, что элемент управления WebBrowser продолжает использовать текущую версию (что имеет смысл и является разумным шагом MS, поскольку IE9 все еще находится в разработке). Но в моем (крайнем) случае мне нужен элемент управления WebBrowser для использования IE9.

Возможно ли внедрить IE9 в приложение форм .NET?

EDIT

С Hans Passant's help я получаю немного дальше. Что-то очень интересное происходит в каталоге prog файлов IE9. Существует каталог под названием «iepreview.exe.local», который при удалении делает приложение IE9 Preview использующим IE8 (проверяет его с помощью теста acid3).

Не совсем то, что я хочу, но мне интересно, если это какая-то переадресация, которую я мог бы использовать для своих нужд.

EDIT 2

Я попытался применения .local хак к обоим моей копии iexplore.exe и моего .NET приложение, и я заметил кое-что еще интересно - оба приложения начали использовать IE7 вместо IE8 (моя версия IE) или IE9.

Может ли это быть iexplore, пытаясь использовать IE9, а затем отступать на IE7? Кажется странным, что даже IE7 будет доступен, но это строка useragent, которую он начинает использовать.

ответ

3

Единственный способ, которым IE9 может устанавливать бок о бок, - это когда он использует новые GUID для интерфейсов и соклафов. Это означает, что вы не можете использовать WebBrowser, он имеет жесткие коды GUID.

Существует еще один вариант использования обертки AxHost. Щелкните правой кнопкой мыши панель инструментов, выберите «Элементы», выберите вкладку «Компоненты COM» и найдите IE9 в списке. Не знаю, как это можно было бы назвать, старое имя было «Microsoft Web Browser», обслуживаемое c: \ windows \ system32 \ ieframe.dll

Вам придется обойтись без дружественных классов оболочки WebBrowser и HtmlDocument.

+0

У меня нет регистраций COM в моем каталоге предварительного просмотра платформы IE. Все DLL-файлы находятся в подкаталоге iepreview.exe.local, а в mshtml есть DllRegisterServer. Поэтому я ожидаю, что его можно будет убрать на место или даже просто зарегистрировать там, где он есть, но, вероятно, больше этого. – Rup

+0

Пахнет как бесплатный COM. Это имеет смысл, но значительно затрудняет задачу. Вам нужно будет скопировать все в каталог сборки вашего проекта. И создайте свой собственный манифест. Бррр. –

+0

Я обновил свой вопрос с дополнительной информацией об этом. –

12

На самом деле вы можете изменить свой реестр, чтобы заставить вашу программу использовать рендеринг IE9. Перейти к HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION и добавить новое значение DWORD с именем Ваше имя программы (с расширением .exe) и значение в десятичного установлен в 9999.


Вы можете также измените свой реестр, чтобы заставить вашу программу использовать рендеринг GPU в IE9. Перейдите в HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_GPU_RENDERING и добавьте новое значение DWORD с именем вашего имени программы (с.ехе) и значение а шестнадцатеричное устанавливается равным 1.


ЭТО работает, только если у вас действительно есть IE9! Вы должны сначала загрузить IE9, прежде чем вы это сделаете, или не будет работать. Если вы хотите сделать страницы с IE8 просто изменить 9999 до 8888.

Примечание: GPU Rendering доступна только в IE9

2

После многих 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) Inter net Explorer 9. Веб-страницы отображаются в стандартном режиме IE9, независимо от директивы! DOCTYPE.

9000 (0x2328) Internet Explorer 9. Веб-страницы, содержащие основанные на стандартах! DOCTYPE директивы отображаются в режиме IE9.

8888 (0x22B8) веб-страниц отображаются в режиме стандартов IE8, независимо от директивы DOCTYPE!.

8000 (0x1F40) сетевые ресурсы, содержащие основанные на стандартах! Директивы DOCTYPE отображаются в режиме IE8.

7000 (0x1B58) сетевые ресурсы, содержащие основанные на стандартах! Директивы DOCTYPE отображаются в режиме IE7 Standards.

Смежные вопросы