tecnica.gif (746 byte) Tecnica.jpg (9372 byte)Felice Marra (fmarra@tecnet.it)

 

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 l’interprete 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 l’indirizzo Web da visitare e un’area rettangolare dove vengono visualizzati i documenti Html. È proprio quest’ultimo oggetto che la Microsoft mette gratuitamente a disposizione sotto forma di componente ActiveX, che consente d’inserire nei programmi un vero e proprio Web browser, personalizzabile a seconda delle proprie necessità.

 

Personal browser multiuso

Sono disparati gli ambiti d’impiego 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 un’azienda che mette a disposizione su Internet l’elenco 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é l’ambiente di navigazione

L’installazione 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 nell’ambiente di lavoro del progetto corrente.
A questo punto l’ambiente 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 l’Url della pagina da visualizzare e l’elenco dei siti che abbiamo visitato in precedenza. Possiamo immediatamente fare il primo esperimento per verificare l’effettiva 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 all’interno dell’oggetto CmbURL associamo il metodo navigate dell’oggetto 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 l’elenco degli indirizzi che sono stati digitati in precedenza, posizionando il seguente codice nell’evento BeforeNavigate dell’oggetto 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 l’URL digitato esiste già nella lista
If CmbURL.List(i) = strURL Then
bFound = True
Exit For
End If
Next i

If Not bFound Then
‘Se l’URL non esiste l’aggiunge nella lista
CmbURL.AddItem strURL
End If

CmbURL.Text = strURL
End Sub

Potremmo inoltre estendere quest’operazione 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 all’evento


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 d’accesso

Abbiamo già sottolineato come il Web browser personalizzato possa essere d’aiuto qualora un’azienda decidesse di effettuare il controllo delle pagine che si vogliono visualizzare, in modo da vietare l’accesso 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 l’evento BeforeNavigate possiamo controllare che l’utente si stia collegando all’unico sito permesso bloccandogli l’accesso 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 l’effetto 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 dall’applicazione 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.


Internet News è un mensile della Casa Editrice Tecniche Nuove S.p.A.
© 1995/99. Tutti i diritti sono riservati.
Internet News non risponde di eventuali errori e omissioni.
Commenti a: inews@tecnet.it