WebBrowser, Finestre e Sessioni

WebBrowser

Mai lavorato con il controllo System.Windows.Forms.WebBrowser?

Oggi mi sono accorto che, se una pagina web richiede l’apertura di una nuova finestra, si apre Internet Explorer perdendo così la sessione corrente stabilita con il sito web. La risoluzione è concettualmente semplice, ma non immediata da trovare.

Aggiungiamo tra i riferimenti del progetto l’oggetto COM Microsoft Internet Controls, quindi inseriamo questo codice nella nostra form contenente il WebBrowser (nel costruttore del form o nell’evento Form.Load):

[csharp firstline="3"]// C#
SHDocVw.WebBrowser shdocbrowser = (SHDocVw.WebBrowser)WebBrowser1.ActiveXInstance;
shdocbrowser.NewWindow3 += NewWindow3;
[/csharp]
[vbnet firstline="3"]' VB.NET
Dim shdocbrowser As SHDocVw.WebBrowser = DirectCast(WebBrowser1.ActiveXInstance, SHDocVw.WebBrowser)
AddHandler shdocbrowser.NewWindow3, AddressOf NewWindow3
[/vbnet]

Dove WebBrowser1 è il nostro WebBrowser.
Adesso inseriremo il codice per gestire la nuova finestra:

[csharp firstline="20"]// C#
public void NewWindow3(ref object pDisp,
                       ref bool cancel,
                       uint flags,
                       string URLContext,
                       string URL)
{
        webbrowserform browserform = new webbrowserform();
        browserform.Show();
        pDisp = browserform.WebBrowser1.ActiveXInstance;
}[/csharp]
[vbnet firstline="20"]' VB.NET
Public Sub NewWindow3(ByRef pDisp As Object,  _
                      ByRef cancel As Boolean, _
                      ByVal flags As UInteger, _
                      ByVal URLContext As String, _
                      ByVal URL As String)

        Dim browserform As New webbrowserform
        browserform.Show()
        pDisp = browserform.WebBrowser1.ActiveXInstance
End Sub
[/vbnet]

webbrowserform è la nostra form contenente il WebBrowser.

Adesso il controllo funzionerà come desiderato, e le nuove finestre si apriranno nello stesso programma invece che in explorer.

Un pensiero su “WebBrowser, Finestre e Sessioni

  1. Mi da un errore a questa riga “Dim browserform As New webbrowserform”
    dice “Errore 6 Tipo ‘webbrowserform’ non definito.”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *