Nav*_*san 6 .net c# windows uwp windows-10-universal
我正在尝试使用以下代码从我的 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();
Run Code Online (Sandbox Code Playgroud)
Rob*_*SFT 10
你真的有两个问题:
要从 WinForms 应用程序启动协议,请使用带有UseShellExecute = true的 Process 对象。不要尝试使用 Explorer.exe 作为进程启动它。
启动应用程序的最佳方式是通过协议,只要应用程序定义了一个。如果您控制该应用程序,那么您可以定义一个协议,如@Romasz 所示:处理 URI 激活
您在命令行中使用的 shell:appsFolder 技巧是一个方便的脚本技巧,但没有记录或保证。不要发布依赖于它的代码。
一旦你有了一个协议,你就可以用 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();
Run Code Online (Sandbox Code Playgroud)
由于 People 应用定义了一个文档化的协议,所以最好以这种方式启动它。这也可以让我们选择我们想要的联系人:
Process p = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.UseShellExecute = true;
startInfo.FileName = @"ms-people:viewcontact?PhoneNumber=8675309";
p.StartInfo = startInfo;
p.Start();
Run Code Online (Sandbox Code Playgroud)
启动未定义协议的 UWP 应用的正确方法是使用 IApplicationActivationManager。这是 shell 将在内部使用的内容,它可以让您更好地控制要启动的内容和方式。
在 C# 中的IApplicationActivationManager::ActivateApplication 中是否有关于使用 C# 中的IApplicationActivationManager的 stackoverflow 问答?
| 归档时间: |
|
| 查看次数: |
5991 次 |
| 最近记录: |