由于种种原因吧,我需要使用一个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的东西忘完了,哎,如此弱鸡!