Monday, September 3, 2007

WebBrowser con IStaySharp

. Monday, September 3, 2007

Per puro caso mi sono imbattuto in un Windows control IStaySharp.WebBrowser che ho subito messo alla prova, viste le diverse e non poche noie causatemi dal Microsoft WebBrowser( controllo che ci permette di navigare nelle pagine web all'interno di applicazioni Windows Form), soprattutto per quanto riguarda l'intenso consumo di risorse RAM.
Dopo aver scaricato la libreria è sufficente aggiungere la IStaySharp.WebBrowser.dll nella toolbox di Visual Studio, e trascinare il controllo sulla form.
Da sottolineare che tale libreria implementa funzionalità non solo di Internet Explorer ma anche di Mozilla(bisogna però installare il Mozilla ActiveX control) ed inoltre non dipende dalle due dll: AxInterop.SHDocVw.dll e SHDocVw.dll.
Supponiamo di voler eseguire una ricera su Google, i passi da eseguire sono:
1)Navigare nella home di Google:

Dim _busy As Boolean = True

Private Sub NavigatePage(ByVal url As String)
IeBrowser1.Navigate(url)
While (_busy)
Application.DoEvents()
End While
End Sub

Private Sub IeBrowser1_DocumentComplete(ByVal sender As Object, ByVal e As IStaySharp.WebBrowser.DocumentCompleteEventArgs) Handles IeBrowser1.DocumentComplete
If (IeBrowser1.Url.AbsoluteUri <> "about:blank" And IeBrowser1.ReadyState = IStaySharp.WebBrowser.WebBrowserReadyState.Complete) Then
_busy
= False
End If
End Sub

L'evento DocumentComplete permette di capire quando la pagina è stata scaricata, verificando che lo stato sia di tipo Complete attraverso l'enumeratore WebBrowserReadyState.
2)Ricercare l'input box in cui indicare la parola da ricercare
3)Ricercare il pulsante "Cerca con Google" ed effettuare il submit
Per eseguire quest'ultimi passi ci affidiamo alla library MSHTML(Microsoft HTML Object Library):



Private Function Find()
Dim document As mshtml.HTMLDocumentClass = IeBrowser1.Document
'Find input box ricerca
Dim inputSearch As mshtml.HTMLInputElementClass = document.getElementsByName("q").item(0)
inputSearch.value
= "sign in blog"

'Find submit
Dim submitSearch As mshtml.HTMLInputElementClass = document.getElementsByName("btnG").item(0)
submitSearch.click()
End Function

A questo punto non ci resta che richiamare nell'ordine:


NavigatePage("http://www.google.it")
Find()

"Chissà come si potrebbe comportare in un vecchio progetto...mah non lo saprò mai :D"

1 commenti:

Anonymous said...

Secondo me il tuo vecchio progetto spaccherebbe comunque.... ghghghgh

Post a Comment