我有以下问题:
我知道如何启动一个进程并且我知道如何使用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或更高版本上运行
答案 0 :(得分:2)
documentation如果无法启动任何流程,则Process.Start
会返回null
。
我不认为这是调用URI处理程序的正确方法。如果您的目标是Windows 8/10,则可以查看Windows.System.Launcher.LaunchUriAsync
。
要在早期版本的Windows中实现此目的,您始终可以查找注册表以找出URI方案的处理程序,因为处理程序在Windows注册表中的HKEY_CLASSES_ROOT
下注册。有关Java中的实现,请参阅here;有关官方文档,请参阅here。