Итак, я знаю о FEATURE_BROWSER_EMULATION, но либо он не работает для меня, либо управляет только режимом браузера, а не режимом документа.
У меня есть много информации, относящейся к моему случаю ниже, но общий вопрос, на который я думаю / надеюсь, должен иметь простой ответ, который применим ко многим людям: Как мне заставить элемент управления WebBrowser отображаться точно так же, как любая версия IE, установленный пользователем? Я думаю, это сводится к контролю над "Режимом документа"
Я пытаюсь заставить элемент управления WebBrowser отображать HTML так же, как это делает IE10, без изменения HTML (потому что это ненадежно). Мое приложение - это почтовый клиент, который отображает электронную почту в формате HTML, и вот как может выглядеть типичное письмо от GMail:
<div dir="ltr"><div id="" team-id="21062" dir="ltr"><div id="email-body-container" style="width:96%; padding:0; margin:2%; border:solid 1px #E7E7E7;">
<div id="email-body-header" style="width:94%; padding:3% 3% 2% 3%; background-color:#f5f5f5; border-bottom:solid 1px #eaeaea;">
<img src="http://www.google.com/adwords/htp/static/legacy/adwords_logo_grey_166x28.png" alt="Google AdWords" width="166" height="28" style="outline:none; text-decoration:none; -ms-interpolation-mode: bicubic; display:block;">
</div>
</div></div>
У меня есть этот точный HTML-код в файле с именем c: \ test.htm, и я загружаю его в IE, вводя его в адресную строку, а затем загружаю его в элемент управления веб-браузера с помощью Navigate("c:\\test.htm")
, и они не отображают то же самое .
Я знаю, что это недействительный HTML, потому что он даже не включает тег html, тег body и т. Д., Но именно так работает GMail, и я не могу это контролировать (или другие странные вещи, которые делают почтовые клиенты). Единственное, что я знаю, это то, что Internet Explorer всегда, кажется, хорошо их отображает (вероятно, большинство людей тестируют с IE, вот почему). Однако они плохо отображаются в элементе управления WebBrowser. Вот HTML-код выше в IE10 (Win8) и в простом приложении WinForms с использованием элемента управления WbeBrowser:
Приложение WinForms имеет полосу прокрутки, когда она не нужна, а также граница не соответствует размеру цвета фона. Используя инструменты разработчика IE, я могу попробовать каждую комбинацию режима браузера (от IE7 до IE10) и каждую комбинацию режима документа (стандарты, особенности, стандарты IE7 - IE9), и единственный способ заставить IE отображать как элемент управления WebBrowser - это установить Режим документа на «особенности IE5». В этом случае он отображается так же, как элемент управления WebBrowser, даже если для параметра Browser Mode установлено значение IE10.
Я установил это значение реестра: HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION \ WindowsFormsApplication2.exe
Я попытался установить его на 10000, 10001, 9999, 8888, 9000 и несколько других значений (десятичных, а не шестнадцатеричных), и они не повлияли на эту проблему. Мое имя EXE - WindowsFormsApplication2.exe, я установил свою сборку на x64 и подтвердил, что она работает как 64-разрядный процесс, так что мне не нужно беспокоиться о настройке Wow6432Node вместо этого (но я даже попытался установить это также ).
Итак, я думаю, что это контролирует только режим браузера, но не режим документа? Я также пробовал устаревшую настройку FEATURE_NATIVE_DOCUMENT_MODE, без изменений.
Обратите внимание, я пометил это как TWebBrowser также потому, что изначально я обнаружил эту проблему, используя это, но поскольку почти никто не использует это, я убедился, что смогу воссоздать в реальном простом приложении .NET C # WinForms.
Добавлено 17 мая:
Вот экспорт reg (я удалил все в HKCU, чтобы убедиться, что он ничего не переопределяет в HKLM):
Редактор реестра Windows версии 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"prevhost.exe"=dword:00001f40
"HelpPane.exe"=dword:00002710
"sllauncher.exe"=dword:00001f40
"test.exe"=dword:00002710
"iexplore.exe"=dword:00002711
"windowsformsapplication2"=dword:00002710
"windowsformsapplication2.exe"=dword:00002710
"test"=dword:00002710
Вот как выглядит мой "test.exe" в диспетчере задач:
0x2710
и0x2711
не идентичны. - person stanleyxu2005   schedule 19.05.2014