[源碼下載]
html
做者:webabcd
介紹
背水一戰 Windows 10 之 關聯啓動html5
示例
一、演示如何關聯指定的文件類型(即用本程序打開指定類型的文件)
App.xaml.csc++
// 經過打開文件激活應用程序時所調用的方法 protected override void OnFileActivated(FileActivatedEventArgs args) { Frame rootFrame = new Frame(); rootFrame.Navigate(typeof(Windows10.AssociationLaunching.FileTypeAssociation), args); Window.Current.Content = rootFrame; Window.Current.Activate(); }
AssociationLaunching/FileTypeAssociation.xamlweb
<Page x:Class="Windows10.AssociationLaunching.FileTypeAssociation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:Windows10.AssociationLaunching" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Grid Name="grid" Background="Transparent"> <TextBlock Name="lblMsg" TextWrapping="Wrap" Margin="5"> <Run>本程序能夠打開 .webabcd 類型的文件</Run> <LineBreak /> <Run>測試方法:在桌面新建一個文本文件,隨便輸一些字符,而後將後綴名改成 .webabcd,最後打開文件,本程序會顯示其文本內容</Run> </TextBlock> </Grid> </Page>
AssociationLaunching/FileTypeAssociation.xaml.csexpress
/* * 演示如何關聯指定的文件類型(即用本程序打開指定類型的文件) * * 一、在 Package.appxmanifest 中新增一個「文件類型關聯」聲明,並作相關配置 * 本例中的這部分的配置以下 * <uap:Extension Category="windows.fileTypeAssociation"> * <uap:FileTypeAssociation Name=".webabcd"> * <uap:DisplayName>打開 .webabcd 文件</uap:DisplayName> * <uap:Logo>Assets\StoreLogo.png</uap:Logo> * <uap:InfoTip>用 win10 demo 打開 .webabcd 文件</uap:InfoTip> * <uap:SupportedFileTypes> * <uap:FileType>.webabcd</uap:FileType> * </uap:SupportedFileTypes> * </uap:FileTypeAssociation> * </uap:Extension> * 二、在 App.xaml.cs 中 override void OnFileActivated(FileActivatedEventArgs args),以獲取相關的文件信息 * * FileActivatedEventArgs - 經過打開文件激活應用程序時的事件參數 * Files - 相關的文件信息 * Kind - 此 app 被激活的類型(ActivationKind 枚舉) * 好比,若是是經過「打開文件」激活的話,則此值爲 File * PreviousExecutionState - 此 app 被激活前的狀態(ApplicationExecutionState 枚舉) * 好比,若是此 app 被激活前就是運行狀態的或,則此值爲 Running * NeighboringFilesQuery - 獲取當前文件的相鄰文件 * SplashScreen - 獲取此 app 的 SplashScreen 對象 * User - 獲取激活了此 app 的 User 對象 */ using System; using Windows.ApplicationModel.Activation; using Windows.Storage; using Windows.UI; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; namespace Windows10.AssociationLaunching { public sealed partial class FileTypeAssociation : Page { private FileActivatedEventArgs _fileActivated; public FileTypeAssociation() { this.InitializeComponent(); } protected async override void OnNavigatedTo(NavigationEventArgs e) { // 獲取 FileActivatedEventArgs 對象(從 App.xaml.cs 傳來的) _fileActivated = e.Parameter as FileActivatedEventArgs; // 獲取文件中的文本內容,並顯示 if (_fileActivated != null) { grid.Background = new SolidColorBrush(Colors.Blue); lblMsg.Foreground = new SolidColorBrush(Colors.White); IStorageFile isf = _fileActivated.Files[0] as IStorageFile; lblMsg.Text = $"激活程序的文件是「{isf.Name}」,其文本內容爲:{await FileIO.ReadTextAsync(isf)}"; } } } }
二、演示如何關聯指定的協議(即用本程序處理指定的協議)
App.xaml.cswindows
protected override void OnActivated(IActivatedEventArgs args) { // 經過協議激活應用程序時(參見 AssociationLaunching/ProtocolAssociation.xaml.cs 中的示例) if (args.Kind == ActivationKind.Protocol) { ProtocolActivatedEventArgs protocolArgs = args as ProtocolActivatedEventArgs; Frame rootFrame = new Frame(); rootFrame.Navigate(typeof(Windows10.AssociationLaunching.ProtocolAssociation), protocolArgs); Window.Current.Content = rootFrame; } }
AssociationLaunching/ProtocolAssociation.xaml瀏覽器
<Page x:Class="Windows10.AssociationLaunching.ProtocolAssociation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:Windows10.AssociationLaunching" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Grid Name="grid" Background="Transparent"> <StackPanel Margin="10 0 10 10"> <TextBlock Name="lblMsg" Margin="5"> <Run>本程序能夠處理 webabcd: 協議</Run> </TextBlock> <Button Name="btnProtocol" Content="打開自定義協議 webabcd:data" Click="btnProtocol_Click" Margin="5" /> </StackPanel> </Grid> </Page>
AssociationLaunching/ProtocolAssociation.xaml.csapp
/* * 演示如何關聯指定的協議(即用本程序處理指定的協議) * * 一、在 Package.appxmanifest 中新增一個「協議」聲明,並作相關配置 * 本例中的這部分的配置以下,協議名必須全小寫 * <uap:Extension Category="windows.protocol"> * <uap:Protocol Name="webabcd"> * <uap:Logo>Assets\StoreLogo.png</uap:Logo> * </uap:Protocol> * </uap:Extension> * 二、在 App.xaml.cs 中 override void OnActivated(IActivatedEventArgs args),以獲取相關的協議信息 * * * ProtocolActivatedEventArgs - 經過協議激活應用程序時的事件參數 * Uri - 協議的 uri * CallerPackageFamilyName - 激活當前 app 的 app 的 PackageFamilyName * Kind - 此 app 被激活的類型(ActivationKind 枚舉) * 本例爲 ActivationKind.Protocol * PreviousExecutionState - 此 app 被激活前的狀態(ApplicationExecutionState 枚舉) * 好比,若是此 app 被激活前就是運行狀態的或,則此值爲 Running * SplashScreen - 獲取此 app 的 SplashScreen 對象 * User - 獲取激活了此 app 的 User 對象 */ using System; using Windows.ApplicationModel.Activation; using Windows.System; using Windows.UI; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; namespace Windows10.AssociationLaunching { public sealed partial class ProtocolAssociation : Page { private ProtocolActivatedEventArgs _protocolArgs; public ProtocolAssociation() { this.InitializeComponent(); } protected override void OnNavigatedTo(NavigationEventArgs e) { // 獲取 ProtocolActivatedEventArgs 對象(從 App.xaml.cs 傳來的) _protocolArgs = e.Parameter as ProtocolActivatedEventArgs; // 顯示協議的詳細信息 if (_protocolArgs != null) { grid.Background = new SolidColorBrush(Colors.Blue); lblMsg.Foreground = new SolidColorBrush(Colors.White); lblMsg.Text = "激活程序的自定義協議爲: " + _protocolArgs.Uri.AbsoluteUri; } } private async void btnProtocol_Click(object sender, RoutedEventArgs e) { // 打開自定義協議 webabcd:data Uri uri = new Uri("webabcd:data"); await Launcher.LaunchUriAsync(uri); // 打開 IE 瀏覽器,在地址欄輸入 webabcd:data,即會打開本程序來處理此協議 } } }
OK
[源碼下載]asp.net