你真的在這裏有兩個問題:
- 如何從一個WinForms應用程序
- 如何正確地推出了UWP應用程序啓動的協議。
要啓動從WinForms應用程序的協議使用Process對象與UseShellExecute =真。不要嘗試使用Explorer.exe作爲進程啓動它。
啓動應用程序的最佳方式是通過協議,只要應用程序定義一個。如果你控制應用程序,那麼你可以定義一個協議,如@Romasz所示:Handle URI activation
你在命令行中使用的shell:appsFolder技巧是一種方便的腳本攻擊,但它沒有記錄或保證。不要運送代碼依賴於它。
一旦你有一個協議,你可以用的Process.Start啓動它:
這裏的殼劈啓動聯繫人應用:
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();
推出UWP的應用程序,沒有定義協議的正確方法是使用IApplicationActivationManager。這是shell將在內部使用的內容,它可以讓您更好地控制您正在啓動的內容以及操作方式。
從C#使用IApplicationActivationManager有一個stackoverflow Q/A在IApplicationActivationManager::ActivateApplication in C#?