Protokoll Bindungen in Windows 8

Wer mit HTML zu tun hat, kennt das mailto:info@ppedv.de?subject=hallo. Beim Click auf den Hyperlink öffnet sich das Mail Programm und die To und Betreffzeile ist gefüllt. Auch ein anderes Protokoll nämlich http://www.ppedv.de kennt man, der Browser öffnet sich und zeigt die Website an.

In Windows 8 kann man nun eigene Protokolle definieren. In Vorbereitung eines Fax Clients wird es pp-fax werden. Der erste Weg führt, wie so oft in WinRT in das Manifest der Anwendung. Hier der Screenshot von Visual Studio 11

image

Als nächstes wird in der app.xaml.vb das entsprechende Event OnActivated überladen. Im Event wird dann einen Seite,in dem Fall einfach ein Usercontrol instanziiert und die Eventargs übergeben. darin befinden sich nämlich das wichtigste Attribut, die ursprüngliche URI.

Protected Overrides Sub OnActivated(ByVal args As IActivatedEventArgs)
  
        Dim pwindow As New protAct
        pwindow.pargs = args

        Window.Current.Content = pwindow
        Window.Current.Activate()

End Sub

Wenn der Benutzer in der Explorer Leiste dann eingibt wie folgt. pp-fax://meinehost/irgendwas?faxnummer=23235345345 eingibt wird die METRO App gestartet. Internet Explorer geht natürlich auch.

Jetzt kann in der Seite die Information ausgewertet werden. Dieses VB Beispiel legt dafür einfach ein Property an vom Typ ProtocolActivatedEventArgs. Im Setter werden dann Textboxen befühlt. Die Klasse URI stellt eine Reihe praktischer Helfer bereit um die URL in Ihre Bestandteile Host, Pfad und Querystring zu zerlegen.

  Private _pargs As ProtocolActivatedEventArgs
    Public Property pargs() As ProtocolActivatedEventArgs
        Get
l            Return _pargs
        End Get
        Set(ByVal value As ProtocolActivatedEventArgs)
            _pargs = value

            textbox2.Text = _pargs.Uri.Host
            textbox3.Text = _pargs.Uri.Query

            'pargs.Uri.AbsolutePath
            '_pargs.Uri.Segments()
        End Set
    End Property

In der vorliegenden Windows 8 Consumer Preview, ist es nicht möglich per HyperlinkButton die Protokoll Aktivierung einer fremden METRO App zu erzwingen. Allerdings klappt es mit der Launcher Klasse eine externe Anwendung zu starten.

Private Async Function Button_Click_2(sender As Object, 
e As RoutedEventArgs) As Task Await Launcher.LaunchUriAsync(New
Uri("mailto:INFO@ppedv.de?subject=hannes")) End Function

Kommentar schreiben