C# 如何处理作为UWP运行的WPF应用程序中的文件激活?
我有一个C# 如何处理作为UWP运行的WPF应用程序中的文件激活?,c#,wpf,uwp,desktop-bridge,C#,Wpf,Uwp,Desktop Bridge,我有一个WPF应用程序,我想在其中处理文件激活。我找到了向注册表添加特定值来解决问题的解决方案。问题是最终的应用程序应该是一个UWP应用程序,我正在使用桌面网桥来实现这一点。如果应用程序以UWP运行,则无法访问注册表来设置这些特定值。有没有其他方法可以在不使用注册表的情况下处理文件激活 我还尝试创建一个UWP项目,因为在UWP中,处理文件激活非常容易,可以从这个项目启动WPF应用程序并传递文件内容 我尝试了Launcher.launchurisync(…),但没有找到一个构建URI的示例。如果这
WPF
应用程序,我想在其中处理文件激活。我找到了向注册表添加特定值来解决问题的解决方案。问题是最终的应用程序应该是一个UWP
应用程序,我正在使用桌面网桥来实现这一点。如果应用程序以UWP
运行,则无法访问注册表来设置这些特定值。有没有其他方法可以在不使用注册表的情况下处理文件激活
我还尝试创建一个UWP
项目,因为在UWP中,处理文件激活非常容易,可以从这个项目启动WPF
应用程序并传递文件内容
我尝试了Launcher.launchurisync(…)
,但没有找到一个构建URI的示例。如果这种方法可行,你能给我举个例子吗
然后我还尝试通过Windows.ApplicationModel.AppService
进行通信,但如果应用程序没有运行,也需要启动它。所以这不是一个好办法
我也支持任何其他方法。您可以实现自己的自定义
Main
方法,并检查调用Launcher.launchurisync
API时传递给它的命令行参数的值
如果打包WPF应用程序并以Windows 10版本1809(build 17763)或更高版本为目标,则可以使用AppInstance.GetActivatedEventTargets
方法获取实际的IActivatedEventArgs
,并将其传递到UWP应用程序的on激活的
方法:
[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;
}
}
}
有关更多详细信息,请参阅博客文章和随附内容。是的,我已经可以在uwp项目中实现文件激活,这个线程上的问题是将文件内容传递给另一个appOne。我不清楚的是:因此,我有一个WPF项目,它将与桌面桥打包,包含此
Main()
method。然后我有一个处理文件激活的UWP项目。我收到的激活覆盖了OnActivated()
方法以及如何从该方法启动WPF项目?我想我调用启动器。launchurisync
,但是我应该传递什么类型的Uri作为参数?处理事件的是WPF应用程序。您有两个应用程序吗?UWP应用程序在哪里?如果打包的WPF应用程序处理Uri,可以使用Launcher.launchurisync
就像激活UWP应用程序一样。解决方案中有两个项目。一个是我正在开发的应用程序(WPF)我应该创建一个UWP项目,以便能够注册文件激活。如果我能够在不使用第二个UWP项目的情况下解决问题,那就太好了。正如我从您的回答中了解到的,这是可能的…我刚才注意到,我错过了注册文件激活应该添加到打包项目中,而不是添加到另一个项目中…那里应为两个项目。要打包的WPF应用程序和引用WPF应用程序的Windows应用程序打包项目。无UWP应用程序。