Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

LightSwitch: lanciare il browser da codice, senza custom control o screen aggiuntivi

Quando si parla di Visual Studio LightSwitch è molto frequente la seguente domanda: come faccio a lanciare il browser Web? Ad esempio per aprire dei documenti collegati a un record, ma anche per altre necessità.

Sicuramente si può ricorrere all'interazione con l'assembly System.Windows.WebBrowser.dll di Silverlight 4, il problema principale è che bisogna distinguere il tipo di client:

  • se l'applicazione è un client Web, non si può utilizzare lo user control che richiede privilegi elevati
  • se l'applicazione è un client Desktop, si può utilizzare lo user control ma bisogna creare comunque uno screen a parte che lo visualizzi o incorporarlo in uno screen esistente. Ossia, non si lancia un'istanza separata del Web browser

Per salvare capra e cavoli, lato Desktop si ricorre a una tecnica molto diffusa in LightSwitch ossia la COM Automation di Silverlight 4. Si crea un'istanza dell'oggetto Shell.Application e si invia la richiesta. Qui si lavora in late-binding, non ci piace ma COM Automation è questo, è lecito, è consentito, lo sfruttiamo.

Lato Web, si lancia l'istanza del browser banalmente da codice. Ecco come:

            'Requires the following directives:
            'Option Strict Off
            'Imports System.Runtime.InteropServices.Automation
            'Imports System.Windows.Browser
 
            If AutomationFactory.IsAvailable Then
                'It is a Desktop client
 
                Dim app = AutomationFactory.CreateObject("Shell.Application")
                app.Open("Http://www.microsoft.com")
            Else
                'It is a Web client
                Microsoft.LightSwitch.Threading.Dispatchers.Main.BeginInvoke(Sub()
                                                                                 HtmlPage.Window.Navigate(New Uri("http://www.microsoft.com"UriKind.Absolute), "_blank")
                                                                             End Sub)
            End If

Non dimenticate di aggiungere un riferimento all'assembly sopra citato da Solution Explorer, abilitando la File View ed aggiungendo il riferimento al progetto chiamato Client.

Alessandro

Print | posted on sabato 22 ottobre 2011 21:57 | Filed Under [ Visual Studio LightSwitch ]

Powered by:
Powered By Subtext Powered By ASP.NET