因为有些日子谷歌地球可以通过像edge或internetexplorer这样的浏览器直接使用。但是,如果在wpf中创建一个Webbrowser控件并导航到google.com/maps并单击“卫星视图”,该网站会告诉我,谷歌地球视图不适合我。
比较两种观点:
图片可以在这里找到:
http://wb20.stedum-bekum.de/wp-content/uploads/2017/10/Webbrowser.png
http://wb20.stedum-bekum.de/wp-content/uploads/2017/10/IE.png
*黄色矩形sais:3d视图不可用
在我的代码中,我设置了User Agent manuelly并在导航事件中通过urlmon更新它。
webbrowser.Navigate(new Uri("https://google.de/maps"), null, null, "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv: 11.0) like Gecko \r\n");
和
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
private static extern int UrlMkSetSessionOption(
int dwOption, string pBuffer, int dwBufferLength, int dwReserved);
const int URLMON_OPTION_USERAGENT = 0x10000001;
const int URLMON_OPTION_USERAGENT_REFRESH = 0x10000002;
public void ChangeUserAgent(string agent)
{
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT_REFRESH, null, 0, 0);
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, agent, agent.Length, 0);
}
我也改变了webbrowser的行为,就像通过FEATURE_BROWSER_EMULATION
有人知道如何在webbrowser中使用它吗?
我也试过dotnetbrowser进行整合。这工作了几天,但现在我得到了同样的信息。
我也试过firefox,edge和chrome(在我的代码之外),它们都像IE一样正常工作。
答案 0 :(得分:0)
我发现了。对于任何需要相同功能的人来说,问题是Web浏览器硬件加速默认情况下是关闭的。你可以设置
注册表中的FEATURE_GPU_RENDERING为1作为状态在此处https://msdn.microsoft.com/en-us/library/ee330731(v=VS.85).aspx