gpt4 book ai didi

c# - 如何从 winform 启动 Windows 通用应用程序

转载 作者:可可西里 更新时间:2023-11-01 11:16:20 25 4
gpt4 key购买 nike

我正在尝试使用以下代码从我的 winform 运行 Windows 通用应用程序,但不幸的是它打开了文档文件夹。我是 UWP 应用程序开发的新手。这是启动 UWP 应用程序的正确方法吗?

Process p = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "explorer.exe";
startInfo.Arguments = @"shell:appsFolder\Microsoft.SDKSamples.CameraAdvancedCapture.CS_8wekyb3d8bbwe!App";
p.StartInfo = startInfo;
p.Start();

最佳答案

你真的有两个问题:

  1. 如何从 WinForms 应用启动协议(protocol)
  2. 如何正确启动 UWP 应用。

要从您的 WinForms 应用启动协议(protocol),请使用带有 UseShellExecute = true 的 Process 对象。不要尝试以 Explorer.exe 作为进程启动它。

启动应用程序的最佳方式是通过协议(protocol),只要应用程序定义了协议(protocol)即可。如果您控制应用程序,那么您可以定义一个协议(protocol),如@Romasz 所示:Handle URI activation

您在命令行中使用的 shell:appsFolder 技巧是一种方便的脚本技巧,但没有记录或保证。不要发布依赖它的代码。

一旦你有了一个协议(protocol),你就可以用 Process.Start 启动它:

这是启动 People 应用程序的 shell hack:

Process p = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.FileName = startInfo.FileName = @"shell:appsFolder\Microsoft.People_8wekyb3d8bbwe!App";
p.StartInfo = startInfo;
p.Start();

自人脉应用 defines a documented protocol最好以这种方式启动它。这也可以让我们选择我们想要的联系人:

Process p = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.FileName = @"ms-people:viewcontact?PhoneNumber=8675309";
p.StartInfo = startInfo;
p.Start();

启动未定义协议(protocol)的 UWP 应用程序的正确方法是使用 IApplicationActivationManager。这是 shell 将在内部使用的内容,它可以让您更好地控制要启动的内容和方式。

关于在 C# 中使用 IApplicationActivationManager 的 stackoverflow Q/A 在 IApplicationActivationManager::ActivateApplication in C#?

关于c# - 如何从 winform 启动 Windows 通用应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41887366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com