TWebbrowser in Windows 10: Microsoft Edge (formerl

2019-02-13 20:42发布

问题:

We know Internet Explorer will be discontinued in Windows 10, being replaced by the new Microsoft Edge (formerly codenamed "Project Spartan").

There are millions of apps using TWebbrowser, a component that uses the Internet Explorer API.

Does anybody have information about how those applications will work in future versions of Windows? How can we be prepared to keep our applications working in future Windows versions?

回答1:

According to IE Blog

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

So IE (and mshtml.dll) is not going to disappear, it will exist in Windows 10 for backward compatibility so TWebbrowser should still work in next version of Windows.



回答2:

(edit problem fixed, solution in the end)

I have Delphi 2006(32bit) application using a WebBrowser OCX. I write FEATURE_BROWSER_EMULATION/myapp.exe = 0 registry value to have highest IE rendering mode. Worked fine through WinXP-Win7-Win8-Win10(before latest patches). Latest patches made changes somewhere, now webbrowser canvas is blank but no errors anywhere.

It's still calling http request, so not completely broken just not rendering anything on screen. Myapp request is using Spartan useragent(Edge/12) which kind of makes sense I was requesting highest feature emulation.

This is a list of useragents from standalone browsers and myapp before/after Win10 patch 10074->10131.

IE Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko

Spartan Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.9600

myapp.exe (patch 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(patch 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 environment worked fine but patch_10131 renders blank but calls initial http request. It does not call any links in a response html page. Myapplication is not modified.

I need to test lowering registry value if that helps but it's unfortunate to limit IE emulation level to a lower than available.

ps: My Delphi2006 is really old but I am not going to upgrade it anymore, and it will create 32bit apps. Legacy issues but thats a software reality.

This blog has more about feature_browser_emulation

edit I took highest IE11 value from this Microsoft provided table and everything works now. I set 11001(0x2AF9) registry value.

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

myapp(patch 10131, 11001 registry): Mozilla/5.0 (Windows NT 6.2; WOW64; Trident/7.0; rv:11.0) like Gecko