由於種種原因吧,我需要使用一個WPF程式起調一個UWP程式,下麵總結一下,給自己個備份。 啟動UWP程式的關鍵是協議啟動 給我們的UWP應用添加一個協議,like this: 然後使用協議啟動該UWP有一下幾種方式: 1. 使用UWP的Launcher API // Create the URI t ...
由於種種原因吧,我需要使用一個WPF程式起調一個UWP程式,下麵總結一下,給自己個備份。
啟動UWP程式的關鍵是協議啟動
給我們的UWP應用添加一個協議,like this:
然後使用協議啟動該UWP有一下幾種方式:
1. 使用UWP的Launcher API
// Create the URI to launch from a string.
var uri = new Uri("protocolname:");
// Launch the URI.
bool success = await Windows.System.Launcher.LaunchUriAsync(uri);
這裡涉及到一個問題:怎麼在WPF中使用UWP的API,可參考鏈接:https://blogs.windows.com/buildingapps/2017/01/25/calling-windows-10-apis-desktop-application/#Zgu8WtZa81OyUzyR.97
2.使用PackageManager,也是UWP的API
//var manager = new PackageManager();
//var p = manager.FindPackagesForUser("", PackageId);
//var ls = await p.ToList()[0].GetAppListEntriesAsync();
//foreach (var item in ls)
//{
// await item.LaunchAsync();
//}
這裡感謝下vbfool大神的悉心指導!
其中的PackageId是包系列名(PackageFamilyName)
3.使用Process.Start(new ProcessStartInfo("protocolname:"));
4.使用命令行
like:>start myapplication:protocol-parameter,參考https://docs.microsoft.com/zh-cn/windows/uwp/xbox-apps/automate-launching-uwp-apps#a-nameaccepting-argumentsa接受參數
鏈接中還介紹了另外一種方式:啟動激活(不支持命令行參數),在此不再贅述.
寫了幾個月的WPF發現把UWP的東西忘完了,哎,如此弱雞!