Tehnika Krstarice > Programiranje > Access - Automatizacija Internet Explorer-a

Access - Automatizacija Internet Explorer-a

02.01.2002.

Microsoft Internet Explorer verzije 5 i novije, dolazi sa prilično dobrim i svestranim, ali slabo dokumentovanim objektnim modelom. Ukoliko ste već imali prilike da koristite kontrolu Web Browser unutar Access-a, onda ste sigurno već upoznati sa mogućnostima Explorer-ovog objektnog modela. Sva funkcionalnost objektnog modela Internet Explorer-a (ne računajući tu spoljnu podršku kao što su skript jezici) nalazi se unutar dve DLL biblioteke:

  • shdocvw.dll (Microsoft Internet kontrole)
  • mshtml.tlb (Microsoft HTML objektna biblioteka )

Uz pomoć funkcija iz ovih biblioteka, možete recimo automatizovati Internet Explorer da lokalno snima HTML fajlove, pregleda ih, i zatim parsira i prikaže određene delove tokom runtime-a aplikacije.

U narednim redovima predstavljamo vam programski kod koji prolazi kroz sve otvorene prozore Internet Explorer-a, tražeći u adresnoj liniji HTML fajlova string URL_TO_SEARCH. Ukoliko pronađe takav prozor, ukazuje korisniku na njega i omogućava mu da snimi taj fajl lokalno. Dodatno, programski kod će proći i kroz sve HTML elemente na stranici i pokušaće da pronađe anchor, čiji se opis nalazi u varijabli ANCHOR_DESC_TO_SEARCH. Ukoliko pronađe ovakav element, odštampaće adresu (URL) anchor-a u prozoru za debagovanje.

Sub sTestIEAutomation()
On Error GoTo ErrHandler
Dim objShellWins As SHDocVw.ShellWindows
Dim objIE As SHDocVw.InternetExplorer
Dim objDoc As Object
Dim i As Integer
Dim strOut As String
Dim intFree As Integer
Dim clsDialog As CDialog
Const URL_TO_SEARCH = "http://www.krstarica.com"
Const ANCHOR_DESC_TO_SEARCH = "Dodaj link"

    Set objShellWins = New SHDocVw.ShellWindows
    For Each objIE In objShellWins
        With objIE
            If (InStr(1, _
                  .LocationURL, _
                 URL_TO_SEARCH, vbTextCompare)) Then
               Set objDoc = .Document
              If (TypeOf objDoc Is HTMLDocument) Then
                 Set clsDialog = New CDialog
                  With clsDialog
                      .hWnd = hWndAccessApp
                      .StartDir = CurDir
                      .ModeOpen = False
                      .DefaultExtension = "htm"
                      .Title =
"Izaberite folder za snimanje fajla"
                      .Filter =
"HTML Fajlovi (*.htm, *.html)|*.htm"
                      strOut = .Action
                  End With
                  If Len(strOut) Then
                      intFree = FreeFile
                      Open strOut For Output As #intFree
                      Write #intFree, 
objDoc.body.parentElement.innerHTML
                      Close #intFree
                      With objDoc.all
                    For i = 1 To .Length
                  If (TypeOf .Item(i)
                  Is HTMLAnchorElement) Then
                If .Item(i).nodeName = "A" Then
              If (InStr(1, _
             .Item(i).innerText, _
            ANCHOR_DESC_TO_SEARCH, _
              vbTextCompare)) Then
                 Debug.Print objDoc.all.Item(i).href
                                       Exit For
                                   End If
                               End If
                           End If
                       Next
                   End With
               End If
           End If
           Exit For
       End If
   End With
Next

 ExitHere:
    On Error Resume Next
    Close #intFree
    Set clsDialog = Nothing
    Set objDoc = Nothing
    Set objIE = Nothing
    Set objShellWins = Nothing
    Exit Sub
ErrHandler:
    With Err
        MsgBox "Greska: " & .Number & vbCrLf 
        & .Description, _
            vbCritical Or vbOKOnly, .Source
    End With
    Resume ExitHere
End Sub

Preporučite

4.75 (glasova: 4)