Quantcast
Channel: VBForums - Visual Basic .NET
Viewing all articles
Browse latest Browse all 27064

VS 2012 VB.NET WebBrowser Control Problem (Object reference not set to an instance of an obj)

$
0
0
Hello all,

I'm working on a project where I have a WebBrowser control which needs to have a custom user-agent set, then go to Google and fill out the search box, click the search button, then click a link from the search results. Unfortunately I can't use HTTPWebRequest, it has to be done with the WebBrowser control.

Before I added the code to change the user-agent, everything worked fine. Here's the code that I have:

Code:

Imports System.Runtime.InteropServices

Public Class Form1

<DllImport("urlmon.dll", CharSet:=CharSet.Ansi)> _
Private Shared Function UrlMkSetSessionOption(dwOption As Integer, pBuffer As String, dwBufferLength As Integer, dwReserved As Integer) As Integer
End Function
Const URLMON_OPTION_USERAGENT As Integer = &H10000001

Public Sub ChangeUserAgent(Agent As String)
    UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, Agent, Agent.Length, 0)
End Sub

Private Sub btnGo_Click(sender As Object, e As EventArgs) Handles btnGo.Click
    ChangeUserAgent("Fake User-Agent")
    wb.Navigate("http://www.google.com", "_self", Nothing, "User-Agent: Fake User-Agent")
End Sub

Private Sub wb_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs) Handles wb.DocumentCompleted
    Dim Source As String = wb.Document.Body.OuterHtml
    Dim Uri As String = wb.Document.Url.AbsoluteUri
    If Uri = "http://www.google.com/" Then

        wb.Document.GetElementById("lst-ib").SetAttribute("value", "browser info")
        wb.Document.All("btnK").InvokeMember("click")

    End If
    If Uri.Contains("http://www.google.com/search?") Then
        Dim TheDocument = wb.Document.All
        For Each curElement As HtmlElement In TheDocument
            Dim ctrlIdentity = curElement.GetAttribute("innerText").ToString
            If ctrlIdentity = "BROWSER-INFO" Then
                curElement.InvokeMember("click")
            End If
        Next
    End If

End Sub

End Class

The problem lies in the following code:

Code:

wb.Document.GetElementById("lst-ib").SetAttribute("value", "browser info")
wb.Document.All("btnK").InvokeMember("click")

I thought the problem might be that the page not being fully loaded (frame issue) but I put the offending code in a timer to test, and got the same error. Any help would be much appreciated.

Viewing all articles
Browse latest Browse all 27064

Trending Articles