有人总问为什么在使用webbrowser.document.links.length时候会有错误91这是因为你在webbrowser 还没有完整的下载页面,就使用的document 对象会出现对象未设置错误91解决办法就是 Private Sub Form_Load()WebBrowser1.Navigate2 (url) 你先给个默认的地址 上来就naviage2 就可以了
End Sub

解决方案 »

  1.   

    有人问如何使用webbrowser 去navigate2 一个列表里面的所有urllist因为他们经常的出现错误是只浏览最后一个list..是因为webbrowers没有足够的时间去挨个去浏览,解决如下:Private Sub Go_Click()
     Dim URL_Index As Integer, CurrentURL As String
      For URL_Index = 0 To List3.ListCount - 1
         CurrentURL = List3.List(URL_Index)
         If CurrentURL <> "" Then
             WebBrowser1.Navigate2 CurrentURL, 4
        While Not (WebBrowser1.ReadyState = READYSTATE_COMPLETE)
          DoEvents
       Wend
         End If
       Next URL_Index
       End Sub
      

  2.   

    ??为什么要在没有下载完毕就要进行操作呢?WebBrowser控件提供下载完成时触发的事件~~~~
      

  3.   

    这是个不用 webbrowser 抓links 的办法:=========
    Private Sub cmdGo_Click()
        Dim objLink As HTMLLinkElement
        Dim objMSHTML As New MSHTML.HTMLDocument
        Dim objDocument As MSHTML.HTMLDocument
        
        
        lblStatus.Caption = "Gettting document via HTTP"
            Set objDocument = objMSHTML.createDocumentFromUrl(txtURL.Text, vbNullString)
        
        lblStatus.Caption = "Getting and parsing HTML document"
            While objDocument.readyState <> "complete"
            DoEvents
        Wend
        
        lblStatus.Caption = "Document completed"
        
        
        
        txtSource.Text = objDocument.documentElement.outerHTML
        
        DoEvents
        
     
        lblTitle.Caption = "Title : " & objDocument.Title
        
        DoEvents
        
        lblStatus.Caption = "Extracting links"
        
     
        
        For Each objLink In objDocument.links
            lstLinks.AddItem objLink
            lblStatus.Caption = "Extracted " & objLink
            DoEvents
        Next
        
        lblStatus.Caption = "Done"
        
        Beep
        
    End Sub
      

  4.   

    这是个给webbrowser 加右键menu 的东西,好象.net 就不用这么麻烦了Option Explicit
    Dim hw As LongPrivate Sub Command1_Click()
        WebBrowser1.Navigate Text1.Text
        WebBrowser1.Visible = True
    End SubPrivate Sub Form_Load()
        Dim h As Long, aClass As String, k As Long
        h = GetWindow(hwnd, GW_CHILD)
        aClass = Space$(128)
        Do While h
            k = GetClassName(h, aClass, 128)
            If Left$(aClass, k) = "Shell Embedding" Then hw = h: Exit Do
            h = GetWindow(h, GW_HWNDNEXT)
        Loop    WebBrowser1.Navigate ""
        origWndProc = SetWindowLong(hw, GWL_WNDPROC, AddressOf AppWndProc)
    End SubPrivate Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
        SetWindowLong hw, GWL_WNDPROC, origWndProc
    End SubPrivate Sub mnuPrint_Click()
        MsgBox "Print!"
    End SubPrivate Sub mnuNavigate_Click()
    Command1_Click
    End SubPrivate Sub Text1_GotFocus()
        Text1.SelStart = 0
        Text1.SelLength = Len(Text1.Text)
    End Sub
      

  5.   

    这是上面的加menu 的bas 文件==
    Option Explicit
    Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
    Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
    Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
    Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPublic Const GWL_WNDPROC = (-4)Public Const GW_HWNDNEXT = 2
    Public Const GW_CHILD = 5
        
    Public Const WM_MOUSEACTIVATE = &H21
    Public Const WM_CONTEXTMENU = &H7B
    Public Const WM_RBUTTONDOWN = &H204Public origWndProc As LongPublic Function AppWndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
        Select Case Msg
            Case WM_MOUSEACTIVATE
                Dim C As Integer
                Call CopyMemory(C, ByVal VarPtr(lParam) + 2, 2)
                If C = WM_RBUTTONDOWN Then
                    Form1.PopupMenu Form1.mnuBrowser
                    SendKeys "{ESC}"
                End If
            Case WM_CONTEXTMENU
                Form1.PopupMenu Form1.mnuBrowser
                SendKeys "{ESC}"
        End Select
        AppWndProc = CallWindowProc(origWndProc, hwnd, Msg, wParam, lParam)
    End Function