如何在Windows 8中从命令行运行Metro-Application?


20

我正在开发一个自动化系统,它的功能之一是从命令行运行应用程序(我的意思是,无需人工干预即可自动运行)。

在Windows 7上,我可以通过命令行调用运行所需的一切,是否可以通过某些类似的方法在安装了Metro-apps的Windows 8上执行相同的操作?


在Windows 8中,是否存在命令行?
伊恩·博伊德

1
是的,只需在Metro界面上键入cmd并执行即可。
Diogo 2012年

您在使用VS吗?
soandos 2012年

2
FWIW,您可能想要专注于Powershell。AppX软件包包括几个用于管理Metro应用程序的cmdlet(Get-Help Appx有关详细信息,请参阅),尽管目前我找不到任何运行它们的内容。
Indrek 2012年

1
据我所知,您不能从命令行运行Metro应用程序。我希望有人知道一些破解/解决方案。
Corporate Geek

Answers:


12

是的 我找到了一个方法...

基于源代码(“从桌面应用程序打开Metro风格应用程序”),我意识到我可以像通常手动运行一样调用Metro应用程序。我的意思是,如果您按Ctrl+ Esc并转到Metro的屏幕,则只需键入Metro应用程序的名称(例如“ store”),然后按即可Enter,Metro应用程序正在运行。基于此,我创建了一个非常简单的VBScript以自动完成以下步骤:

设置objShell = WScript.CreateObject(“ WScript.Shell”)

objShell.SendKeys“ ^ {ESC}”

WScript.Sleep 1000

objShell.SendKeys WScript.Arguments.Item(0)

WScript.Sleep 1000

objShell.SendKeys“ {ENTER}”

将其另存为“ metro.vbs”,并在命令行中使用第一个参数的Metro应用程序名称进行调用:

metro.vbs商店

就是这样,非常简单和优化的方式。

附言:所有荣誉归功于创建相关代码的Codeplex网站用户AlKhuzaei。谢谢。


啊,我在想同样的事情。有趣的解决方案。唯一的问题是,如果您有两个名称相同的程序,例如安装了Metro版本和台式版本的Evernote。上面哪个启动了??自Visual Studio可以启动您正在开发的应用程序以来,应该有另一种方法。
Jim McKeeth 2012年

我认为这是因为ctrl + esc只会打开Metro应用程序……这很值得测试。
Diogo 2012年

不,只是尝试过。[Ctrl] + [Esc]与[Win]相同,并且两者都只显示“ 开始”菜单,该菜单允许在其中启动任何程序-Metro和Desktop均如此。
Jim McKeeth 2012年

那么,当两个应用程序Metro和Desk具有相同名称时,Windows 8会做什么?在Metro界面上变得重复了吗?
Diogo 2012年

是的,真的很烦人。正是出于这个原因,我卸载了Evernote的Metro版本。
Jim McKeeth 2012年

6

以下博客文章和支持代码向您展示了如何在PowerShell中使用IApplicationActivationManager进行此操作。

获取Metro应用程序列表并使用PowerShell在Windows 8中启动它们«Tome的IT之地

幸运的是,我能够在Stack Overflow上找到一些代码,这些代码演示了如何在C#中使用它(该帖子还列出了我将在本文中介绍的注册表信息)。经过一些代码和Add-Type语法的调整,我能够将所需的功能公开到PowerShell中。之后,只需将函数包装到类似于PowerShell的内容中即可。

该代码可以在poshcode找到


欢迎来到超级用户Tome!我们希望答案是独立的,因此不要过多地依赖外部资源。我引用了您博客文章中最相关的部分,但是您可以自由进行更多编辑,甚至可以解决OP的确切问题。
slhck

非常酷的信息,在这里!
本·理查兹

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.