我有一个WPF
我想要处理文件激活的应用程序。我找到了通过向注册表添加特定值来解决问题的解决方案。问题是最终的应用程序应该是UWP
应用程序,我正在使用桌面桥来执行此操作。如果应用程序运行为UWP
,它无法到达注册表来设置这些特定值。有没有其他方法可以在不使用注册表的情况下处理文件激活?
我也尝试创建一个UWP
项目,因为在 UWP 中很容易处理文件激活并以某种方式启动我的WPF
从该项目应用程序并传递文件的内容。
我尝试过Launcher.LaunchUriAsync(...)
,但我还没有真正找到如何构建 URI 的示例。如果这种方法可行,你能给我一个例子吗?
然后我也尝试通过以下方式进行交流Windows.ApplicationModel.AppService
但如果应用程序未运行,也需要启动该应用程序。所以这不是一个好办法。
我也对任何其他方法持开放态度。
您可以实现自己的自定义Main
方法并检查调用时传递给它的命令行参数的值Launcher.LaunchUriAsync
API.
如果您打包 WPF 应用程序并面向 Windows 10 版本 1809(内部版本 17763)或更高版本,则可以使用AppInstance.GetActivatedEventArgs
获取实际值的方法IActivatedEventArgs
被传递到OnActivated
UWP应用程序的方法:
[STAThread]
static void Main()
{
App application = new App();
application.InitializeComponent();
application.OnActivated(Windows.ApplicationModel.AppInstance.GetActivatedEventArgs());
application.Run();
}
然后您可以在 WPF 应用程序中处理它:
public partial class App : Application
{
public void OnProtocolActivated(IActivatedEventArgs args)
{
switch (args.Kind)
{
case ActivationKind.File:
//handle file activation
break;
}
}
}
请参阅this https://blog.magnusmontin.net/2019/05/10/handle-protocol-activation-and-redirection-in-packaged-apps/博客文章和随附的代码示例 https://github.com/mgnsm/CodeSamples/tree/master/ActivationAndRedirectionSample更多细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)