背水一战 Windows 10 (99) - 关联启动: 关联指定的文件类型, 关联指定的协议
作者:webabcd
介绍
背水一战 Windows 10 之 关联启动
- 关联指定的文件类型
- 关联指定的协议
示例
1、演示如何关联指定的文件类型(即用本程序打开指定类型的文件)
App.xaml.cs
// 通过打开文件激活应用程序时所调用的方法
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.xaml
<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.cs
/*
* 演示如何关联指定的文件类型(即用本程序打开指定类型的文件)
*
* 1、在 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>
* 2、在 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[] as IStorageFile;
lblMsg.Text = $"激活程序的文件是“{isf.Name}”,其文本内容为:{await FileIO.ReadTextAsync(isf)}";
}
}
}
}
2、演示如何关联指定的协议(即用本程序处理指定的协议)
App.xaml.cs
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.cs
/*
* 演示如何关联指定的协议(即用本程序处理指定的协议)
*
* 1、在 Package.appxmanifest 中新增一个“协议”声明,并做相关配置
* 本例中的这部分的配置如下,协议名必须全小写
* <uap:Extension Category="windows.protocol">
* <uap:Protocol Name="webabcd">
* <uap:Logo>Assets\StoreLogo.png</uap:Logo>
* </uap:Protocol>
* </uap:Extension>
* 2、在 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
[源码下载]
背水一战 Windows 10 (99) - 关联启动: 关联指定的文件类型, 关联指定的协议的更多相关文章
- 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Application Data 中的媒体
[源码下载] 背水一战 Windows 10 (91) - 文件系统: Application Data 中的文件操作, Application Data 中的“设置”操作, 通过 uri 引用 Ap ...
- 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理
[源码下载] 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理 作者:webabcd 介绍背水一战 Windows 10 ...
- 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议
[源码下载] 与众不同 windows phone (38) - 8.0 关联启动: 使用外部程序打开一个文件或URI, 关联指定的文件类型或协议 作者:webabcd 介绍与众不同 windows ...
- 背水一战 Windows 10 (98) - 关联启动: 使用外部程序打开一个文件, 使用外部程序打开一个 Uri
[源码下载] 背水一战 Windows 10 (98) - 关联启动: 使用外部程序打开一个文件, 使用外部程序打开一个 Uri 作者:webabcd 介绍背水一战 Windows 10 之 关联启动 ...
- 重新想象 Windows 8 Store Apps (33) - 关联启动: 使用外部程序打开一个文件或uri, 关联指定的文件类型或协议
原文:重新想象 Windows 8 Store Apps (33) - 关联启动: 使用外部程序打开一个文件或uri, 关联指定的文件类型或协议 [源码下载] 重新想象 Windows 8 Store ...
- 背水一战 Windows 10 (2) - UI: 概述, 启动屏幕, 屏幕方向
[源码下载] 背水一战 Windows 10 (2) - UI: 概述, 启动屏幕, 屏幕方向 作者:webabcd 介绍背水一战 Windows 10 之 UI UI 设计概述 启动屏幕(闪屏) 屏 ...
- 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用
[源码下载] 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用 作者:weba ...
- 背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口
[源码下载] 背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口 作者 ...
- 背水一战 Windows 10 (106) - 通知(Toast): 通过 toast 打开协议, 通过 toast 选择在指定的时间之后延迟提醒或者取消延迟提醒
[源码下载] 背水一战 Windows 10 (106) - 通知(Toast): 通过 toast 打开协议, 通过 toast 选择在指定的时间之后延迟提醒或者取消延迟提醒 作者:webabcd ...
随机推荐
- java 编程英语单词,语句
记录一下java 编程工作学习中常用的英语汇总 in other words: 换句话说 dangle :悬挂 separated:分开的 distinct:明显的,独特的 actual :实际的 i ...
- php判断用户是否关注微信公众号
方法一: <?php $access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_cr ...
- JavaSE基础知识(7)—常用类
一.包装类 1.理解 java为八大基本数据类型一一对应提供了引用类型,方便使用里面的属性和方法 2.包装类型 byte——>Byteshort——>Shortint——>Integ ...
- 如何打开用eclipse没有.project文件的Java工程
大概分为以下7个步骤,具体如下: 1.在你的eclipse下新建一个与你想要打开的源代码项目同名的一个项目(我这举例叫myweb). 2.在电脑磁盘中找到刚刚新建的项目,把它生成的.project文件 ...
- Ansible安装及OS规划
Ansible安装 1.以管理用户mtnsadmin连接服务器后下载安装包(-O表示将下载的文件存放到指定的文件夹下,同时重命名下载的文件) sudo wget -O /etc/yum.re ...
- playframework 一步一步来 之 日志 (三)
在paly中自定义配置logback,也很简单,只需在conf folder下添一个application-logger.xml或者logger.xml就行了.(出处:"If you cre ...
- 分离式lnmp部署
分离式lnmp简介 lnmp和lamp一样,是一种常用的web环境, 在实际环境中,lnmp中的三个服务常常为了更好的性能而分在三台主机上安装. 本篇内只介绍nginx和php-fpm+mysql分离 ...
- Programming for Everyone !
Hello Internet ! This blog is to store my algorithm practices. Since Evernote code blocks do not sho ...
- 利用insertd查出更新记录
DROP TABLE #tableCREATE TABLE #table(CompanyID VARCHAR(20),BillNo VARCHAR(40))UPDATE dbo.SD_Inv_Move ...
- java下载Excel模板(工具类)
一次文件下载记录 一次不成熟的文件下载操作记录,希望能对需要的人有所帮助. 1.前端代码 $("#downloadModel").click(function(){ var mod ...