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
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