如何执行使用通用的Windows平台(UWP)应用程序的命令(或类似)?

问题描述 投票:24回答:2

我正在创建自定义命令柯塔娜。这些命令注册和使用通用的Windows平台的应用程序执行。 (GitHub)

举例来说,我已经注册了下面的命令

<Command Name="ShutDown">      
  <ListenFor>Shut down</ListenFor>
  <Navigate/>    
</Command>

要在UWP应用程序中运行该功能

static async void ShutDown()
{
    var dialog = new MessageDialog("This is where I would shut the computer down.");
    await dialog.ShowAsync();
    //System.Diagnostics.Process.Start("Shutdown", "-s -t 10");
}

但这一设置后,我学会了System.Diagnostics.Process不UWP支持。

我要运行的自定义命令涉及某种执行诸如启动外部程序,运行其他脚本,或打开网站。

这是有道理的,UWP不支持他们给它的普遍性和Xbox或手机可能无法做到这些,但我希望能有一些替代或做到这一点在Windows 10计算机上哈克的方式。

有没有办法对我来说,在UWP应用程序中执行命令Process或者具有类似功能的其他什么东西?好像即使我能得到柯塔娜执行我的C#代码,UWP不支持多这将是在这种情况下非常有用。

提前致谢。

c# uwp windows-10 win-universal-app cortana
2个回答
19
投票

有 - 限制 - 的方式来实现类似的行为。

  1. 你可以使用LaunchUri触发其注册为特定URI的方案其他应用程序。这应该适用于你的网页浏览器的情况。更多细节在这里:https://msdn.microsoft.com/en-us/library/windows/apps/windows.system.launcher.launchuriasync.aspx
  2. 你可能引发新一轮的应用程序,并使用LaunchForResults从它那里得到返回结果。被叫应用程序必须支持这一点。更多细节在这里:https://msdn.microsoft.com/en-us/library/windows/apps/mt269386.aspx
  3. 你可能会引发另一个应用程序提供应用程序服务。被叫应用程序必须支持这一点。该应用程序服务将在后台执行。 (我认为这是很酷。)详细信息在这里:http://blogs.msdn.com/b/mvpawardprogram/archive/2015/06/11/writing-windows-10-app-services-in-javascript.aspx
  4. 这是一个小哈克:我不知道这是否仍然有效,但它没有工作的Windows 8.1:您可以创建一个所谓的“经纪人的组件”。这使您可以从您应用程式你的机器上引发的一切,但是你将无法发布通知代理组件进店。这也是在Windows 8.1中允许的Process.Start()。这只是工作的侧载应用程序。我不知道它是否仍然适用于Windows 10,这里更多的信息:https://msdn.microsoft.com/en-us/library/windows/apps/dn630195.aspx

摘要:启动另一个应用程序是很容易的,只要在目标应用程序注册为应用服务或注册的协议处理程序(URI方案)。启动脚本或者其他的* .exe是不可能的,如果选择4没有任何失效。


9
投票

与Windows 10周年更新(1607年)有使PC上这种情况下的一个选项。随着桌面扩展SDK这个API,您可以启动运行在完整的用户权限的fulltrust过程:

https://docs.microsoft.com/en-us/uwp/api/Windows.ApplicationModel.FullTrustProcessLauncher

这样你就可以点亮它上运行的1607或以上,其中被支持的平台,即个人电脑。和你的应用程序仍然是普遍的:

if (ApiInformation.IsApiContractPresent("Windows.ApplicationModel.FullTrustAppContract", 1, 0))
{
    await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
}
© www.soinside.com 2019 - 2024. All rights reserved.