在c#webbrowser中显示google earth

时间:2017-10-11 08:55:12

标签: c# wpf webbrowser-control google-earth

因为有些日子谷歌地球可以通过像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一样正常工作。

1 个答案:

答案 0 :(得分:0)

我发现了。对于任何需要相同功能的人来说,问题是Web浏览器硬件加速默认情况下是关闭的。你可以设置

注册表中的FEATURE_GPU_RENDERING为1作为状态在此处https://msdn.microsoft.com/en-us/library/ee330731(v=VS.85).aspx