我用WebBrowser自动点击网页中的链接,发现点击一下CPU占用提高到60%,很耗费资源,请问如果用WebBrowser自动点击网页中的链接,怎么写代码占用CPU少,有什么好方法Option Explicit
Private Sub Command1_Click()
      WebBrowser1.Navigate "http://news.baidu.com/"  '打开百度新闻网
End SubPrivate Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
  On Error Resume Next
  If WebBrowser1.LocationURL = "http://news.baidu.com/" Then
  Dim vDoc, vTag, s
  Dim i As Integer
  Set vDoc = WebBrowser1.Document
  For i = 0 To vDoc.All.Length - 1
            If (InStr(Trim(vDoc.All(i).innertext), "财经") <> 0) And UCase("a") = vDoc.All(i).tagname Then  '点击百度新闻网中"财经"链接
            s = vDoc.All(i)
            vDoc.All(i).Click
            End If
  Next i
  End If
End Sub

解决方案 »

  1.   

    你的代码有问题,因该在整个页面加载完成后处理。如:
    Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) 
        On Error Resume Next 
        Dim vDoc, vTag, s 
        Dim i As Integer 
        
        if pDisp is WebBrowser1.Object then
            Set vDoc = WebBrowser1.Document 
            For i = 0 To vDoc.All.Length - 1 
                If (InStr(Trim(vDoc.All(i).innertext), "财经") <> 0) And UCase("a") = vDoc.All(i).tagname Then  '点击百度新闻网中"财经"链接 
                      s = vDoc.All(i) 
                    vDoc.All(i).Click 
                End If 
            Next i 
        End If 
    End Sub 
      

  2.   

    还是没能降低CPU啊,代码应该没问题吧
      

  3.   

    再加一句
    Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) 
        On Error Resume Next 
        Dim vDoc, vTag, s 
        Dim i As Integer 
        
        if pDisp is WebBrowser1.Object then
            Set vDoc = WebBrowser1.Document 
            For i = 0 To vDoc.All.Length - 1 
                If (InStr(Trim(vDoc.All(i).innertext), "财经") <> 0) And UCase("a") = vDoc.All(i).tagname Then  '点击百度新闻网中"财经"链接 
                      s = vDoc.All(i) 
                    vDoc.All(i).Click 
                    Exit For
                End If 
            Next i 
        End If 
    End Sub 
      

  4.   

    禁用webbrowser中的flash控件if pDisp is WebBrowser1.Object then 这句前 加个doevents使用links集合 代替all集合枚举,可以提高效率,因为你只想找链接,而不是正文文字vDoc.All(i).Click 这个方法要延迟执行,否则容易使ie6崩溃
      

  5.   

    我也遇到了和楼主一样的问题,WEBBrowser访问页面内链接导致CPU占用过高(在老机器上甚至达到100%),如何解决啊?