Подскажите, пожалуйста, как мне, используя, если я правильно выражаюсь, экземпляр класса InternetExplorer библиотеки SHDOCVW.DLL и, соответственно, для работы с текстом самой страницы HTML библиотека MSHTML.DLL, получать список тэгов, или определенного тэга, каждой новой(!) страницы, которую я открываю по ссылке в самом уже браузере. Написал такой код (URL взял просто для примера)...
- Код: Выделить всё
'References --> Microsoft Internet Controls (SHDOCVW.DLL)
'References --> Microsoft HTML Object Library (MSHTML.DLL)
'Private Const READYSTATE_COMPLETE = 4
Dim WithEvents Explorer As InternetExplorer
Dim HTMLDoc As MSHTML.HTMLDocument
Dim objElements As IHTMLElementCollection
Private Sub Form_Load()
Show
Set Explorer = New SHDocVw.InternetExplorer
Explorer.Visible = True
Explorer.Silent = True 'Тихий режим (никаких сообщений об ошибках сценария и прочее...)
Explorer.Navigate "http://allapi.mentalis.org"
'While Explorer.ReadyState <> READYSTATE_COMPLETE: DoEvents: Wend
End Sub
Private Sub Explorer_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Me.Cls
MsgBox "Страница загружена! --> " & URL & vbNewLine & "Получить список тэга <a>"
Set HTMLDoc = Explorer.Document
Dim objElement As IHTMLElement
Set objElements = HTMLDoc.All.tags("a")
For Each objElement In objElements
Print objElement.innerText 'Me.AutoRedraw=True
Next
End Sub
Private Sub Form_Unload(Cancel As Integer)
Explorer.Quit 'Закрываем сам браузер
Set Explorer = Nothing
Set HTMLDoc = Nothing
Set objElements = Nothing
End Sub
Но как-то он непонятно работает. По логике... вроде бы событие Explorer_DocumentComplete должно срабатывать каждый раз как я перехожу по клику на новую страницу и она загрузится полностью, но почему-то так не происходит. Событие Explorer_DocumentComplete то срабатывает, то не срабатывает, то вообще возвращает URL --> about:blank. В общем, работает через раз, через два. И Explorer.Quit то закрывает созданный экземпляр браузера, то не закрывает почему-то, то плодятся несколько Explorer. Короче, какая-то хрень происходит не могу понять. Подскажите, что не так с этим кодом??? Где ошибка? Google спрашивал, он не знает.