vb的webbrowser很討厭的是預設的user-agent好像是ie7
這樣會導致它顯示很多網站會排版錯誤,或畫面怪怪的
下面這個範例可以改正這個問題
Imports Microsoft.Win32 Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load CreateBrowserKey() 'Below code adds a custom useragent, adding a custom useragent does not change the actual engine...thats why we need to do all this coding. WebBrowser1.Navigate("http://www.whatsmybrowser.org", "_top", Nothing, "User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.130 Safari/537.36") 'This goes to the website using default user agent. 'WebBrowser1.Navigate("http://www.whatsmybrowser.org") End Sub Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) Handles Me.FormClosing RemoveBrowerKey() End Sub Private Const BrowserKeyPath As String = "\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION" Private Sub CreateBrowserKey(Optional ByVal IgnoreIDocDirective As Boolean = False) Dim basekey As String = Microsoft.Win32.Registry.CurrentUser.ToString Dim value As Int32 Dim thisAppsName As String = My.Application.Info.AssemblyName & ".exe" ' Value reference: http://msdn.microsoft.com/en-us/library/ee330730%28v=VS.85%29.aspx ' IDOC Reference: http://msdn.microsoft.com/en-us/library/ms535242%28v=vs.85%29.aspx Select Case (New WebBrowser).Version.Major Case 8 If IgnoreIDocDirective Then value = 8888 Else value = 8000 End If Case 9 If IgnoreIDocDirective Then value = 9999 Else value = 9000 End If Case 10 If IgnoreIDocDirective Then value = 10001 Else value = 10000 End If Case 11 If IgnoreIDocDirective Then value = 11001 Else value = 11000 End If Case Else Exit Sub End Select Microsoft.Win32.Registry.SetValue(Microsoft.Win32.Registry.CurrentUser.ToString & BrowserKeyPath, Process.GetCurrentProcess.ProcessName & ".exe", value, Microsoft.Win32.RegistryValueKind.DWord) End Sub Private Sub RemoveBrowerKey() Dim key As Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(BrowserKeyPath.Substring(1), True) key.DeleteValue(Process.GetCurrentProcess.ProcessName & ".exe", False) End Sub End Class