【问题标题】:Start Windows 8 app from code in C#从 C# 中的代码启动 Windows 8 应用程序
【发布时间】:2014-08-12 09:34:57
【问题描述】:

所以,我正在尝试制作一种通用语音控制类型的应用程序(在 Windows 窗体中)。我想知道是否可以从代码启动 Windows 8 应用程序。我猜 System.Diagnostics.Process.Start 不起作用,因为当我尝试从可执行文件运行 Windows 8 应用程序时,它不会启动,说它“需要从框架启动”(我想,我是从记忆中回忆的)。这里有什么想法吗?

谢谢!

【问题讨论】:

  • 啊,谢谢。这完全符合我的目的。唯一让我烦恼的事情(我不知道是否有办法“解决”这个问题)是没有像这样的小“作弊”,没有实际的应用程序/命令可以做到这一点。

标签: c# windows-8


【解决方案1】:

实际上,我找到了自己问题的答案。有一个名为 Start 的命令实际上执行此操作。例如,我刚刚做了“Start MicrosoftMusic:”,然后就成功了(是的,冒号是故意的)。

【讨论】:

  • 是的。它很好,很简单,看起来你可以在冒号之后给它“参数”,或者类似的东西。
【解决方案2】:

我有使用开发模拟器执行它的代码,但它对您没有帮助。但是我做了一些搜索,发现了这个:IApplicationActivationManager::ActivateApplication in C#?

这看起来很熟悉,因为它与我的模拟器代码完全相同。我还没有测试过,但你一定要试一试。

您可能会遇到的最后一件事是“AppUserModelId”。手动浏览注册表并不是一件容易的事。使用这种代码会变得更容易:

RegistryKey packageKey = Registry.ClassesRoot.OpenSubKey(@"ActivatableClasses\Package");
appKey = packageKey.OpenSubKey(packageKey.GetSubKeyNames().First(x => x.StartsWith(appName)));
var serverNameKey = appKey.OpenSubKey(@"ActivatableClassId\App");
var serverName = (string)serverNameKey.GetValue("Server");
var serverKey = appKey.OpenSubKey("Server\\" + serverName);
var AppUserModelId = (string)serverKey.GetValue("AppUserModelId");

【讨论】:

  • 啊,谢谢你的回答。我忘了发布我实际上找到了另一个完美的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多