2011-09-10 57 views
1

當使用System.Windows.Forms.WebBrowser控件時,有沒有辦法控制它將使用哪個版本的IE渲染引擎?爲System.Windows.Forms.WebBrowser控制IE渲染引擎?

+0

的可能重複的[在WinForms應用程序託管MSIEs web瀏覽器控件中兼容模式運行(http://stackoverflow.com/questions/3554314/msies-webbrowser-control-hosted-in-winforms-app-runs在兼容性模式) –

+0

可能重複[關於IE9 WebBrowser控制](http://stackoverflow.com/questions/4612255/regarding-ie9-webbrowser-control) – GuyWithDogs

+0

感謝您的重複鏈接球員 – 7wp

回答

2

我相信IE通過操縱請求User-Agent字符串。

compatible; MSIE 7.0; 
compatible; MSIE 8.0; 
compatible; MSIE 9.0; 

所以要在WebBrowser中使用不同的渲染引擎,你需要做類似的事情。很遺憾,您可以訪問WebBrowser is not easy中的User-Agent。如果擴展實際的Com組件,而不是使用.Net控件,則可以這樣做。

public class ExtendedWebBrowser : WebBrowser 
{ 
    ... 

    void BeforeNavigate(object pDisp, ref object url, ref object flags, 
         ref object targetFrameName, ref object postData, 
         ref object headers, ref bool cancel) 
    { 
     if (!headers.Contains("X-RequestFlag") 
     { 
      headers += "X-RequestFlag: true\r\n"; 

      // append user-agent header here 
      headers["User-Agent"] = ...; 

      // cancel current request 
      cancel = true; 

      // re-request with amended details 
      Navigate((string)url, (string)targetFrameName, (byte[])postData, 
         (string)headers); 
     } 
     else 
     { 
      base.BeforeNavigate(...); 
     } 
    } 
} 
+0

大多數解決方案我'已經看到涉及編輯註冊表,或者他們要求您有權訪問網頁的源代碼。這既不需要 - 偉大的解決方案恕我直言。 – Unknown123