设为首页 收藏本站
查看: 804|回复: 0

Windows 8 文件关联和程序合约

[复制链接]

尚未签到

发表于 2015-5-23 06:49:11 | 显示全部楼层 |阅读模式
  在windows系统中,我们经常会遇到这样的情况,比如想打开一个图片文件,我们点击鼠标右键,在右键选项中,我们一般会选择打开方式,然后选择能打开图片的应用程序。今天将介绍如何将我们的应用程序注册为这样的一个程序,当我想打开图片,然后再打开方式中选择我们自己的应用程序,来打开图片。如下图:
DSC0000.jpg
  1.文件关联
    1).  注册打开确定的文件类型
  当程序打开的文件类型适合于我们的程序时,要想在上面的列表中看到我们的程序,操作起来很简单,只需要修改一下项目中package.appxmanifest文件即可。打开Package.appxmanifest文件,选择"声明"选项卡。在“可用声明”选择列表中,选择“文件类型关联”,然后点击添加。这时,你会看到右边一个新的表单显示在屏幕上,这个表单是与文件关联相关的。默认情况下,这里会有几个红色的X,需要你来填写相关内容。如下图:
DSC0001.jpg
  在支持的文件类型选项中,我们可以设置成我们自己的文件类型,比如(.win)。 微标是当一个程序是某个文件类型的默认打开程序时,我想要显示自己的logo 或者icon,就像Excel有一个Excel图标,为了达到这个效果,打开package.appxmanifest文件,在指定name的地方,指定一个logo,即可。
  当你做完了上面的步骤,那么基本的工作就完成了。现在运行一次程序,将其安装到你的系统中,然后尝试使用“打开方式”打开一个指定的类型。选择一个图片,然后再打开方式中就可以看到我们的应用程序了。
  2).  处理打开的文件。
  当我们通过选择打开方式,打开一个图片后,怎样在我们的应用程序中显示出来呢?此时,我们应该做如下工作:
  在程序的App.xaml.cs文件中,可以通过重写Application中的OnFileActivated方法,来捕获打开文件的事件,并做相应的处理,如下代码:
  protected override void OnFileActivated(FileActivatedEventArgs args)
  {
            Frame frame = Window.Current.Content as Frame;
  if (frame == null)
  {
  frame =new Frame();            
                Window.Current.Content = frame;
  }
           if (!frame.Navigate(typeof(MainPage), args))
  {
  throw new Exception("Failed to create initial page");
  }
  Window.Current.Activate();
  }
  然后在我们的MainPage页面中进行处理打开的文件。代码如下:
  protected async override void OnNavigatedTo(NavigationEventArgs e)
  {
  FileActivatedEventArgs args = e.Parameter as FileActivatedEventArgs;
  if (args != null)
  {
    List fileList =new List();
  List list = newList();
  IReadOnlyList files = args.Files;
  if (files != null && files.Count > 0)
  {
                  foreach (var obj in files)
  {
  var listToken = Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.Add(obj);
  StorageFile file = await Windows.Storage.AccessCache.StorageApplicationPermissions.FutureAccessList.GetFileAsync(listToken);
  fileList.Add(file);
  Photo photo = newPhoto();
  IRandomAccessStream stream = await file.OpenReadAsync();
  if (stream.Size > 0)
  {
                           BitmapImage bitmapImage = newBitmapImage();
  bitmapImage.SetSource(stream);
  photo.Url = bitmapImage;
  list.Add(photo);
  }
  }
  }
  if (list.Count > 0)
  {
                    this.ViewResult.ItemsSource = list;
  }
  }
  }
       public class Photo
  {
           public string Name { set;get;}
  public BitmapImage Url  { set;get;}
  }
  UI层XAML代码: 
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-69655-1-1.html 上篇帖子: Windows 8 动手实验系列教程 实验8:Windows应用商店API 下篇帖子: 重新想象 Windows 8 Store Apps (69)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表