检索URI"返回代码"?

时间:2016-01-16 18:44:35

标签: c# process uri protocols

我有以下问题:

我知道如何启动一个进程并且我知道如何使用System::Diagnostics::Process - 类,但是当我想通过使用其关联(和注册)的URI协议来启动进程时,我无法检索有关已启动流程的任何信息。

我使用以下代码:

public static int Main(string[] argv)
{
    Process p = Process.Start("myuri://some_arguments");

    while (!p.HasExited)
        Application.DoEvents();

    Console.WriteLine(p.ExitCode);
    Console.ReadKey(true);

    return 0;
}

我的C#应用​​程序在第5行 while (!p.HasExited) 失败,因为变量 p null


我现在想知道:为什么会这样?最重要的是:

TL; DR: ...如何检索URI协议"退出/返回代码"?

来自The answer

编辑NO.1: @ohw非常有用 - 但是,我无法使用类Windows::System::Launcher作为我的目标计算机正在Windows7上运行,而不是在Windows8或更高版本上运行

1 个答案:

答案 0 :(得分:2)

documentation如果无法启动任何流程,则Process.Start会返回null

我不认为这是调用URI处理程序的正确方法。如果您的目标是Windows 8/10,则可以查看Windows.System.Launcher.LaunchUriAsync

要在早期版本的Windows中实现此目的,您始终可以查找注册表以找出URI方案的处理程序,因为处理程序在Windows注册表中的HKEY_CLASSES_ROOT下注册。有关Java中的实现,请参阅here;有关官方文档,请参阅here