等待已启动的应用程序停止

时间:2017-02-07 14:27:28

标签: c# uwp launch

我们目前正在UWP开展一个项目,我们必须启动一个外部应用程序来修改一些文档。

我们查看了 Windows.System.Launcher API,但似乎我们需要的不仅仅是它能为我们提供的功能。

当我们从文件启动应用程序时,我们使用 LaunchFileAsync 方法,基于example given by the MSDN

async void DefaultLaunch()
{
   // Path to the file in the app package to launch
   string imageFile = @"images\test.png";

   var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(imageFile);

   if (file != null)
   {
      // Launch the retrieved file
      var success = await Windows.System.Launcher.LaunchFileAsync(file);

      if (success)
      {
         // File launched
      }
      else
      {
         // File launch failed
      }
   }
   else
   {
      // Could not find file
   }
}

到目前为止,该示例非常适合我们,但我们还需要在用户完成文件时收到警告。最好的方法是能够为启动器提供一个回调方法。

我们在文档中还没有找到类似的东西。这甚至可能吗?我们需要使用其他解决方案吗?

TL; DR:是否有解决方案从UWP应用程序打开另一个应用程序并等待它返回结果对象?

2 个答案:

答案 0 :(得分:2)

如果外部应用也是UWP应用,那么Launcher.LaunchUriForResultsAsync就是为此设计的。它将启动目标应用程序,然后等待应用程序回调结果。

请参阅Launch an app for results,详细了解其工作原理。

如果目标应用程序不是UWP应用程序,那么您可以自己实现相同的功能:两个应用程序都声明了协议。客户端使用服务器协议启动服务器。服务器完成后,它会通过启动客户端的协议来通知呼叫者。

您可能还想查看App Services,它允许UWP服务器应用程序向本地系统上的客户端公开类似REST的服务。

答案 1 :(得分:1)

应用程序进程隔离模型意味着您无法从UWP应用程序执行此操作。您只想知道任意程序何时完成,您可以使用传统的.net / win32编写它,并通过desktop bridge将其包含在您的UWP应用程序中。

相关问题