Windows10 中的 TWebbrowser:Microsoft Edge(以前称为 Spartan)/Internet Explorer 遗留问题

TWebbrowser in Windows 10: Microsoft Edge (formerly Spartan) / Internet Explorer legacy issues

我们知道 Internet Explorer 将在 Windows 10 中停用,取而代之的是新的 Microsoft Edge(以前的代号为 "Project Spartan")。

有数百万个应用程序使用 TWebbrowser,这是一个使用 Internet Explorer 的组件 API。

是否有人知道这些应用程序在 Windows 的未来版本中将如何工作?我们如何准备好让我们的应用程序在未来的 Windows 版本中正常运行?

根据IE Blog

Internet Explorer 11 will remain fundamentally unchanged from Windows 8.1, continuing to host the legacy engine exclusively.

因此 IE(和 mshtml.dll)不会消失,它将存在于 Windows 10 中以实现向后兼容性,因此 TWebbrowser 应该仍可在下一版本的 Windows 中使用。

(edit问题已解决,解决方案在最后)

我有 Delphi 2006(32 位)应用程序使用 WebBrowser OCX。我写 FEATURE_BROWSER_EMULATION/myapp.exe = 0 注册表值以获得最高的 IE 呈现模式。通过 WinXP-Win7-Win8-Win10(最新补丁之前)工作正常。最新的补丁在某处进行了更改,现在 webbrowser canvas 是空白的,但任何地方都没有错误。

它仍在调用 http 请求,所以没有完全损坏,只是没有在屏幕上呈现任何内容。 Myapp 请求正在使用 Spartan useragent(Edge/12),这在我请求最高功能仿真时是有道理的。

这是独立浏览器和 myapp 的用户代理列表 before/after Win10 补丁 10074->10131。

IE Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7. 0; rv:11.0) 喜欢 Gecko

斯巴达Mozilla/5.0 (Windows NT 10.0; Win64; x64) [=69= .36(KHTML,如 Gecko)Chrome/42.0.2311.135 Safari/537.36 Edge/12.9600

myapp.exe(补丁 10074) Mozilla/5.0(Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0

myapp.exe(补丁 10131) Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.9200

Win10_patch_10074 环境工作正常但 patch_10131 呈现空白但调用初始 http 请求。它不会调用响应 html 页面中的任何链接。我的申请没有修改。

我需要测试降低注册表值是否有效ps,但不幸的是将 IE 仿真级别限制在低于可用级别。

ps:我的Delphi2006确实老了,但我不会再升级了,它会创建32位的apps。遗留问题,但这是软件现实。

This blog has more about feature_browser_emulation

edit 我从 this Microsoft provided table 中获取了最高的 IE11 值,现在一切正常。我设置了 11001(0x2AF9) 注册表值。

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
myapp.exe = 11001(0x2AF9)

myapp(补丁 10131、11001 注册表):Mozilla/5.0(Windows NT 6.2;WOW64;Trident/7.0;rv:11.0)像 Gecko