[英]How to pass string to UWP app and launch it from a Windows Forms app
最简单的方法是使用自定义URI方案,然后使用它启动应用程序。
注册和处理自定义URI在官方UWP文档中有详细描述,因此我建议您遵循这一点。 简而言之,首先在Package.appxmanifest
注册自定义URI方案,然后覆盖App.xaml.cs
的OnActivated
,并检查IActivatedEventArgs.Kind
是否为ActivationKind.Protocol
。 然后,将IActivatedEventArgs
为ProtocolActivatedEventArgs
并使用其Uri
属性访问已启动的URI。
在Windows窗体方面,您只需启动URI,这将导致UWP应用程序启动/激活。 您可以通过使用URI启动进程来执行此操作:
var url = "myapp:?someparam=somevalue";
var psi = new ProcessStartInfo();
psi.UseShellExecute = true;
psi.FileName = url;
Process.Start(psi);
您可以使用URI通过在URI中使用查询字符串参数将任何string
值传递给UWP应用程序。 您可以在UWP应用程序中阅读OnActivated
方法中的那些。
当然,这不是唯一的解决方案,因为您现在也可以在Windows窗体中使用UWP API,因此您可以使用App Services在两个应用程序之间传递数据。 如果您只需要单向通信,那么自定义URI就是您的选择。
从构建16226开始,UWP支持App Execution Alias,它允许您声明一个系统范围的应用程序名称,该名称可用于从系统中的任何位置从命令行启动应用程序。 您可以在此博文中阅读更多相关信息。 这样,您可以直接通过其名称启动应用程序,并将参数作为进程参数传递。
除了@Martin Zikmund的答案; 本文解释了如何从命令行启动UWP应用程序,它基本上与Process.Start
一样,但在脚本方案中可能更容易。 但是不适用于所有设备。
c:\> explorer.exe shell:appsFolder\put-your-PackageFamilyName-here!put-your-app-ID-here
查询字符串附录也应该有效。
如果您没有自己设置参数,请特别注意如何获取参数:
- 浏览到对应于PackageFamilyName的InstallLocation
- 打开AppxManifest.xml
- 为您想要的应用程序查找“Executable =”。 (由于某些应用程序包包含多个应用程序,此类邮件和日历属于同一个数据包)
- 在同一行,找到应用程序的ID
打开邮件应用程序的示例:
explorer.exe shell:appsFolder \\ microsoft.windowscommunicationsapps_8wekyb3d8bbwe!microsoft.windowslive.mail
而且, 另一个使用完整命令列表
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.