等待启动的应用程序停止
Wait for an launched application to stop
我们目前正在 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
}
}
到目前为止,该示例很适合我们,但我们还需要在用户完成文件操作时收到警告。最好能给launcher一个回调方法。
我们尚未在文档中找到类似的内容。这可能吗?我们需要使用其他解决方案吗?
TL;DR:是否有从 UWP 应用程序打开另一个应用程序并等待它 return 结果对象的解决方案?
应用进程隔离模型意味着您无法从 UWP 应用执行此操作。因为您只想知道任意程序何时完成,您可以用传统的 .net/win32 编写并通过 desktop bridge.
将其包含在您的 UWP 应用程序中
如果外部应用也是 UWP 应用,那么 Launcher.LaunchUriForResultsAsync 就是为此而设计的。它将启动目标应用,然后等待该应用返回结果。
有关其工作原理的完整演练,请参阅 Launch an app for results。
如果目标应用不是 UWP 应用,那么您可以自己实现同样的事情:两个应用都声明一个协议。客户端使用服务器的协议启动服务器。当服务器完成后,它会通过启动客户端协议来通知调用者。
您可能还想查看 App Services,它允许 UWP 服务器应用向本地系统上的客户端公开 REST-like 服务。
我们目前正在 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
}
}
到目前为止,该示例很适合我们,但我们还需要在用户完成文件操作时收到警告。最好能给launcher一个回调方法。
我们尚未在文档中找到类似的内容。这可能吗?我们需要使用其他解决方案吗?
TL;DR:是否有从 UWP 应用程序打开另一个应用程序并等待它 return 结果对象的解决方案?
应用进程隔离模型意味着您无法从 UWP 应用执行此操作。因为您只想知道任意程序何时完成,您可以用传统的 .net/win32 编写并通过 desktop bridge.
将其包含在您的 UWP 应用程序中如果外部应用也是 UWP 应用,那么 Launcher.LaunchUriForResultsAsync 就是为此而设计的。它将启动目标应用,然后等待该应用返回结果。
有关其工作原理的完整演练,请参阅 Launch an app for results。
如果目标应用不是 UWP 应用,那么您可以自己实现同样的事情:两个应用都声明一个协议。客户端使用服务器的协议启动服务器。当服务器完成后,它会通过启动客户端协议来通知调用者。
您可能还想查看 App Services,它允许 UWP 服务器应用向本地系统上的客户端公开 REST-like 服务。