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

這個標題真是取得我都以爲蛋疼。。微軟更名狂魔搞得我都不知道要叫哪一個好。。windows

這邊記錄一下本身的桌面程序跟windows store app交互的過程。安全

因爲某些緣由,微軟的商店應用的安全沙箱致使不少事情沒法作到,所以額外作了一個.NET桌面引擎來輔助,那麼如今就須要讓這兩個不一樣環境的程序進行交互.app

 

第一步:在桌面應用引擎中,喚醒商店應用。ide

根據MSDN解釋,這邊最簡單的辦法是使用協議(URI protocol)來解決。spa

1:打開程序的Package.appxmanifest,在聲明中添加協議orm

名稱中添加的協議就是你你要的xml

例如:bingnews:// blog

能夠打開bing新聞ip

這個名稱就是前面的紅字部分string

咱們試試輸入weipaisuperbar

添加完協議後,

在App.xaml.cs中對引入的協議內容作處理

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頁面去


OK,如今來試試吧,直接運行裏輸入weipaisuperbar://Whatever
如今已經完成了這個app的啓動方式了,接着到WINFORM那邊寫入代碼試試。

啓動代碼也很簡單
  Process.Start("weipaisuperbar://Whatever");

  

這樣winform啓動商店應用的問題就解決了。

 

第二步,winform讀取商店應用的配置文件。

 

因爲安全沙箱,因此捏你也別想着去讀取商店應用的根目錄,也沒有啥註冊表的權限,因此要跟外部程序交互請使用

Roaming(可漫遊數據,用戶更換設備後登錄帳號還能夠繼續漫遊回來)

Local(只在本地使用)

能幫咱們漫遊數據固然最好了,咱們就用這個作例子

 
//初始化配置文件 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這個文件了,接下來讀寫都簡單了吧

相關文章
相關標籤/搜索