在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)

这个标题真是取得我都觉得蛋疼。。微软改名狂魔搞得我都不知道要叫哪个好。。

这边记录一下自己的桌面程序跟windows store app交互的过程。

由于某些原因,微软的商店应用的安全沙箱导致很多事情无法做到,因此额外做了一个.NET桌面引擎来辅助,那么现在就需要让这两个不同环境的程序进行交互.

 

第一步:在桌面应用引擎中,唤醒商店应用。

根据MSDN解释,这边最简单的办法是使用协议(URI protocol)来解决。

1:打开程序的Package.appxmanifest,在声明中添加协议

名称中添加的协议就是你你要的

例如:bingnews:// 

可以打开bing新闻

这个名称就是前面的红字部分

我们试试输入weipaisuperbar

添加完协议后,

在App.xaml.cs中对引入的协议内容做处理

1
2
3
4
5
6
7
8
9
10
11
12
protected override void OnActivated(IActivatedEventArgs args)
{
    if (args.Kind == ActivationKind.Protocol)
    {
        ProtocolActivatedEventArgs protocolArgs =
           args as ProtocolActivatedEventArgs;
        var rootFrame = new Frame();
        rootFrame.Navigate(typeof(BlogItems), args);
        Window.Current.Content = rootFrame;
    }
    Window.Current.Activate();
}

  转过来的就自动导航到BlogItems页面去

1
<br>OK,现在来试试吧,直接运行里输入weipaisuperbar://Whatever <br>现在已经完成了这个app的启动方式了,接着到WINFORM那边写入代码试试。<br><br>启动代码也很简单
1
Process.Start("weipaisuperbar://Whatever");

  

这样winform启动商店应用的问题就解决了。

 

第二步,winform读取商店应用的配置文件。

 

由于安全沙箱,所以捏你也别想着去读取商店应用的根目录,也没有啥注册表的权限,所以要跟外部程序交互请使用

Roaming(可漫游数据,用户更换设备后登陆账号还可以继续漫游回来)

Local(只在本地使用)

能帮我们漫游数据当然最好了,我们就用这个做例子

1
2
3
4
5
6
7
<br>//初始化配置文件
           string _Name = "settings.xml";
         
           Windows.Storage.StorageFolder storageFolder = Windows.Storage.ApplicationData.Current.RoamingFolder;
 
           //创建文件
           var _File = await storageFolder.CreateFileAsync(_Name, Windows.Storage.CreationCollisionOption.ReplaceExisting);

  OK,这样在C:\Users\用户名\AppData\Local\Packages\程序名\RoamingState里面就会有settings.xml这个文件了,接下来读写都简单了吧

1
 
posted @   MayBreath  阅读(618)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示