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

标签 c# uwp windows-10 win-universal-app cortana

我正在致力于创建自定义 Cortana 命令。这些命令是使用通用 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 或手机可能无法执行这些操作,但我希望有一些替代方法或 hacky 方法可以在 Windows 10 PC 上完成此操作.

有没有办法让我在 UWP 应用程序中执行 Process 命令或其他具有类似功能的命令?似乎即使我可以让 Cortana 执行我的 C# 代码,UWP 也不支持很多在这种情况下有用的东西。

提前致谢。

最佳答案

实现类似行为的方法有限。

  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. 这有点 hacky:我不确定这是否仍然有效,但它确实适用于 Windows 8.1:您可以创建一个所谓的“代理组件”。这允许您从您的应用程序在您的机器上触发所有内容,但您将无法将代理组件发布到商店中。这也允许在 Windows 8.1 上使用 Process.Start()。它只适用于旁加载的应用程序。我不确定它是否仍然适用于 Windows 10。 更多信息在这里:https://msdn.microsoft.com/en-us/library/windows/apps/dn630195.aspx

总结: 启动另一个应用程序非常简单,只要目标应用程序注册为应用程序服务或注册协议(protocol)处理程序(Uri 方案)即可。 如果选项 4 不再起作用,则无法启动脚本或其他 *.exe。

关于c# - 如何使用通用 Windows 平台 (UWP) 应用程序执行进程命令(或类似命令)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43277084/

相关文章:

c# - C# 中的并行处理/并行编程

c# - Assert.NotNull(object anObject) 与 Assert.IsNotNull(object anObject)

c# - 参数定界符

c# - {} 表达式的含义

c# - Windows 10 UWP 中的视觉状态管理器未在页面加载时应用初始状态

cmd - PHP Composer 和 Laravel 安装程序输出中的奇怪字符 - Windows 10 CMD

c# - 在UWP中将音频文件转换为8000Hz 16Bit Mono Wav

MvvmCross 4 对 UWP 的支持,AppShell 缺少框架

c++ - 如何使用 C++ 代码中的特定 URL 启动 Microsoft Edge

azure - 通过脚本连接到 Azure 点到站点 VPN