簡體   English   中英

如何從Winform啟動Windows Universal App

[英]How to launch a Windows Universal App from winform

我正在嘗試使用以下代碼從Winform運行Windows Universal App,但不幸的是,它打開了documents文件夾。 我是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應用程序啟動協議
  2. 如何正確啟動UWP應用。

要從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();

由於“人脈”應用定義了已記錄的協議,因此最好以這種方式啟動它。 這也可以讓我們選擇所需的聯系人:

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 :: ActivateApplication中,如何使用來自C#的IApplicationActivationManager進行堆棧溢出Q / A

您可以使用自動啟動Windows 10 UWP應用

"C:\Program Files (x86)\Windows Kits\10\App Certification Kit\microsoft.windows.softwarelogo.appxlauncher.exe" MyPackageName_ph1m9x8skttmg!AppId

其中MyPackageName_ph1m9x8skttmg是您的UWP應用的程序Package family name ,而AppId是您的Package.appxmanifest文件中<Applications> xml元素下的Application Id

您可以為URI方案注冊該應用 ,然后將其激活。 在應用程序內部,您將必須處理OnActivated事件。

至於一些更多信息, 此MSDN頁面此SO答案可能會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM