Internet Explorer componente programmabile
Uno degli elementi di forza del browser di casa Microsoft è la sua «riusabilità»,
ovvero la possibilità d'integrare il suo ambiente di visualizzazione in altre
applicazioni. In questa sede abbiamo realizzato un esempio con Visual Basic
Chissà quanti sviluppatori si saranno già trovati in condizione di dover visualizzare
un documento Html in un programma gestionale o in qualsiasi altra applicazione aziendale?
Di fronte a questa situazione, i meno esperti avranno sicuramente «setacciato» in lungo
e in largo il Web alla ricerca di qualche controllo freeware o a basso costo. I più
«autolesionisti» si saranno costruiti da soli linterprete di pagine Html, per poi
scoprire che visualizzare un applet Java non è poi così semplice.
I più smaliziati, invece, avranno di sicuro notato che Internet Explorer è formato da
diversi elementi: una maschera contenente i pulsanti di navigazione, il menu principale,
la casella di testo dove inserire lindirizzo Web da visitare e unarea
rettangolare dove vengono visualizzati i documenti Html. È proprio questultimo
oggetto che la Microsoft mette gratuitamente a disposizione sotto forma di componente
ActiveX, che consente dinserire nei programmi un vero e proprio Web browser,
personalizzabile a seconda delle proprie necessità.
Personal browser multiuso
Sono disparati gli ambiti dimpiego di un oggetto di questo tipo. Si pensi, per
esempio, al caso in cui occorra realizzare un programma per la gestione del listino prezzi
di unazienda che mette a disposizione su Internet lelenco dei prodotti con il
relativo costo.
In una situazione di questo tipo, risulterebbe molto comodo poter affiancare il
visualizzatore di pagine Web alla tabella dei dati presenti sul database, così da poter
verificare in tempo reale come risulterebbe il documento Html al variare del valore dei
campi.
Altro caso: da qualche anno a questa parte, in occasione di fiere e manifestazioni,
piccole e grandi società commerciali espongono nei propri stand uno o più computer per
mettere a disposizione dei visitatori presentazioni multimediali che illustrano la propria
attività. In questo campo la tecnologia Web e in particolare le estensioni offerte da
Internet Explorer permettono di creare un ambiente di navigazione su misura che può
abilitare gli utilizzatori a eseguire soltanto le operazioni necessarie al funzionamento
delle «demo» in questione, mantenendo il controllo del sistema ed evitando che qualcuno
possa eseguire sulla macchina operazioni indesiderate.
Costruire da sé lambiente di navigazione
Linstallazione di Internet Explorer registra di default il componente
Shdocvw.dll, il «cuore» del browser di casa Microsoft. Per inserire il controllo nella
lista basta selezionare la voce Microsoft Internet Controls (attenzione a non confonderla
con «Microsoft Internet Transfer Control») nella finestra che elenca gli oggetti che si
possono inserire nellambiente di lavoro del progetto corrente.
A questo punto lambiente di sviluppo di Visual Basic presenterà due nuovi
componenti denominati WebBrowser e ShellFolderView.
Selezioniamo ora il primo dei due e posizioniamolo sulla form in cui vogliamo che venga
inserito il visualizzatore di pagine Web.
Fatto questo inseriamo un combo box che utilizzeremo per specificare lUrl della
pagina da visualizzare e lelenco dei siti che abbiamo visitato in precedenza.
Possiamo immediatamente fare il primo esperimento per verificare leffettiva
funzionalità del controllo inserendo il codice che segue
Private Sub CmbURL_KeyPress
(KeyAscii As Integer)
If KeyAscii = 13 Then WebBrowser.Navigate (TxtURL.Text)
End Sub
Come qualsiasi altro componente visuale, anche WebBrowser espone eventi, metodi e
proprietà (le tre tabelle nella pagina
seguente ne illustrano le più significative).
In questa logica, alla pressione del tasto ENTER allinterno delloggetto CmbURL
associamo il metodo navigate delloggetto WebBrowser, che ci permette di raggiungere
e visualizzare la pagina Web del sito specificato. Non è da sottovalutare il fatto che,
qualora si renda necessaria la connessione a Internet, il controllo IE sia in grado di
visualizzare automaticamente la finestra per collegarsi al provider, evitandoci di dover
gestire i processi Dial-Up dal nostro programma.
Bookmark personalizzato
Aggiungiamo ora la possibilità di registrare nel combo box lelenco degli
indirizzi che sono stati digitati in precedenza, posizionando il seguente codice
nellevento BeforeNavigate delloggetto WebBrowse
Private Sub WebBrowser_BeforeNavigate2
(ByVal pDisp As Object, URL As Variant, Flags As Variant, TargetFrameName As Variant,
PostData As Variant, Headers As Variant, Cancel As Boolean)
Dim strURL As String
strURL = CmbURL.Text
Dim bFound As Boolean
Dim i As Integer
For i = 0 To CmbURL.ListCount -1
Controlla se lURL digitato esiste già nella lista
If CmbURL.List(i) = strURL Then
bFound = True
Exit For
End If
Next i
If Not bFound Then
Se lURL non esiste laggiunge nella lista
CmbURL.AddItem strURL
End If
CmbURL.Text = strURL
End Sub
Potremmo inoltre estendere questoperazione salvando la lista su un file e
determinando un numero massimo di indirizzi da visualizzare.
Ora inseriamo alcuni bottoni di navigazione: «Avanti», «Indietro» e «Stop».
Alla pressione del tasto «Avanti» invochiamo il metodo Browser.GoForward mentre per
visualizzare la pagina precedente utilizziamo Browser.GoBack. Allo stesso modo, per
fermare il caricamento di una pagina collegheremo allevento
CmdStop.Click il metodo Browser. Stop
Private Sub CmdAvanti_Click()
On Error Resume Next
Maschera gli errori nel caso non esistessero
pagine successive
WebBrowser.GoForward
Visualizza nel browser la pagina successiva
End Sub
Private Sub CmdIndietro_Click()
On Error Resume Next
Maschera gli errori nel caso non esistessero
pagine precedenti
WebBrowser.GoBack
Visualizza nel browser la pagina precedente
End Sub
Private Sub CmdStop_Click()
WebBrowser.Stop
Ferma il caricamento della pagina corrente
End Sub
Divieti daccesso
Abbiamo già sottolineato come il Web browser personalizzato possa essere daiuto
qualora unazienda decidesse di effettuare il controllo delle pagine che si vogliono
visualizzare, in modo da vietare laccesso agli utilizzatori del programma, a siti
non attinenti al contesto lavorativo.
Immaginiamo, per esempio, di dover realizzare un ambiente di navigazione per una ditta che
ha la sola necessità di collegarsi alla propria Intranet aziendale.
Sfruttando levento BeforeNavigate possiamo controllare che lutente si stia
collegando allunico sito permesso bloccandogli laccesso in tutti gli altri
casi.
Il codice seguente potrebbe essere un esempio:
If InStr("www.nomeazienda.com", LCase(CmbURL.Text)) = 0 Then
MsgBox "Non puoi accedere a siti esterni alla rete aziendale", vbCritical,
"Internet News"
Exit Sub
End If
Un risultato simile lo possiamo ottenere tramite le impostazioni di rete del sistema
operativo, ma chi ha un minimo di esperienza e, se il software è montato su una macchina
Windows95 senza particolari restrizioni di accesso, con una certa facilità potrà
annullare leffetto modificando le opzioni e servirsi come meglio crede. Questo
evento ci permette, inoltre, di tener traccia di tutti i siti Web visitati (magari
costruendo un archivio in un database Access) senza confonderli con quelli di altre
navigazioni effettuate con il normale browser. Infatti, la Cronologia di IE viene
aggiornata in entrambi i casi.
Tenete presente che le impostazioni generali del nostro browser integrato sono le stesse
di Internet Explorer. Quindi, per modificare tali opzioni, bisognerà richiamare la
finestra di configurazione del pannello di controllo. Come fare? Basterà richiamare e far
eseguire il file intecpl.cpl dallapplicazione rundll32.
Inserendo ciò che segue nel programma potremo ottenere il risultato desiderato.
X = Shell("Rundll32.exe shell32.dll,Control_RunDLL Inetcpl.cpl")
Explorer gestisce i propri bookmark con semplici file di testo organizzati in cartelle.
Infatti, se apriamo un qualsiasi file con estensione .url vedremmo una struttura simile a
questa
[InternetShortcut]
URL=http://www.nomedelsito.com/nomedir/index.html
Modified=004FA0F2B953BE01AC
Per utilizzare i «preferiti» di IE anche nel nostro browser personale basterà quindi
posizionarsi nella directory di default (solitamente c:\windows\preferiti) leggere, con
una procedura «ricorsiva», tutti i file di estensione .url e interpretare il loro
contenuto interno.
La stampa del documento
Il metodo ExecWB ci permette di fare diverse operazioni con il controllo WebBrowser tra
cui la stampa su carta di una pagina Web.
Prima di tutto ci conviene impostare le proprietà della pagina:
WebBrowser.ExecWB OLECMDID_PAGESETUP,
OLECMDEXECOPT_DODEFAULT
per poi effettuare la stampa vera e propria:
WebBrowser.ExecWB OLECMDID_PRINT,
OLECMDEXECOPT_DODEFAULT
È da tener presente che il secondo parametro della funzione può essere impostato nei
seguenti modi, a seconda delle esigenze:
OLECMDEXECOPT_DODEFAULT
Visualizza la finestra di conferma se è di default
OLECMDEXECOPT_DONTPROMPTUSER
Stampa subito senza chiedere conferma
OLECMDEXECOPT_PROMPTUSER
Visualizza in qualsiasi caso la finestra di conferma
Queste possibilità sono applicabili anche a tutte le altre funzioni che il comando
ExecWB ci permette di eseguire.
È molto probabile, inoltre, che ci venga richiesto d'implementare una funzione che
consenta di decidere se si vuole effettuare una navigazione online oppure off line. A
questo proposito dobbiamo agire sulla proprietà WebBrowser.Offline che imposta il browser
in modalità «non in linea» se è uguale a TRUE e in modalità «online» in caso
contrario.
Ci siamo così costruiti un Web browser personale.
Occorre però ricordare che per distribuire la nostra applicazione sarà necessario che
sul computer destinatario sia installato Internet Explorer altrimenti il programma non
funzionerà.
Per ottenere il massimo dei risultati non sarà sufficiente allegare al nostro pacchetto
il file shdocwv.dll, ma sarà obbligatorio includere tutto il setup di MSIE, oltre che per
motivi tecnici anche per disposizioni legali descritte nel contratto Microsoft.
Attenzione anche alle versioni di Internet Explorer: potrebbe capitare, infatti, di
richiamare funzioni implementate nella 4 in un computer dove è installata la 3. Per
quanto riguarda tutte le funzioni fate sempre riferimento, oltre ai manuali, al
visualizzatore di oggetti di Visual Basic che elenca dettagliatamente tutti i metodi, le
proprietà e gli eventi disponibili. |