¿Cómo ejecuto una aplicación Metro desde la línea de comandos en Windows 8?

20

Estoy desarrollando un sistema de automatización y una de sus características es ejecutar aplicaciones desde la línea de comandos (es decir, automáticamente sin interrupción humana).

En Windows 7 podría ejecutar todo lo que quisiera desde una llamada de línea de comandos, ¿hay alguna forma similar de hacer lo mismo con Windows 8 con las aplicaciones Metro instaladas?

Diogo
fuente
En Windows 8, ¿ hay una línea de comandos?
Ian Boyd
1
sí, simplemente escriba cmd en la interfaz de metro y ejecútelo.
Diogo
¿Estás usando VS?
soandos
2
FWIW, es posible que desee centrarse en Powershell en su lugar. El paquete de AppX incluye varios cmdlets para administrar aplicaciones de Metro (ver Get-Help Appxdetalles), aunque no pude encontrar nada para ejecutarlas en este momento.
Indrek
1
Que yo sepa, no puede ejecutar aplicaciones de Metro desde la línea de comandos. Espero que alguien conozca algunos trucos / soluciones.
Corporate Geek

Respuestas:

12

¡Sí! Encontre un camino...

Basado en este código fuente ("Abrir una aplicación Metro Style desde la aplicación de escritorio"), me di cuenta de que podía llamar a las aplicaciones de metro tal como solemos ejecutarlas manualmente. Quiero decir, si presionas Ctrl+ Escy vas a la pantalla de metro, puedes escribir el nombre de la aplicación de metro, como "tienda", por ejemplo, presionar y listo Enter, la aplicación de metro se está ejecutando. Basado en esto, creé un VBScript muy simple para hacer exactamente estos pasos automáticamente:

Establecer objShell = WScript.CreateObject ("WScript.Shell")

objShell.SendKeys "^ {ESC}"

WScript.Sleep 1000

objShell.SendKeys WScript.Arguments.Item (0)

WScript.Sleep 1000

objShell.SendKeys "{ENTER}"

Guarde esto como "metro.vbs" y llámelo desde la línea de comandos con el nombre de la aplicación de metro en el primer argumento:

tienda metro.vbs

Eso es todo, de manera muy simple y optimizada.

PD: Todos los créditos otorgados a AlKhuzaei , el usuario del sitio Codeplex que creó el código relacionado. Gracias.

Diogo
fuente
Ah, me preguntaba lo mismo. Solución interesante El único problema es si tiene dos programas con el mismo nombre, como las versiones de Metro y de escritorio de Evernote instaladas. ¿Cuál se lanza con lo anterior? Debería haber otra forma, ya que Visual Studio puede iniciar la aplicación que está desarrollando.
Jim McKeeth
Creo que debido a ctrl + esc, abrirá solo la aplicación de metro ... Es algo que valdría la prueba.
Diogo
No, solo lo intenté. [Ctrl] + [Esc] es lo mismo que [Win], y ambos solo muestran el Menú de Inicio , que permite iniciar cualquier programa allí, tanto Metro como Desktop.
Jim McKeeth
Entonces, ¿qué hace Windows 8 cuando dos aplicaciones metro y escritorio tienen el mismo nombre? ¿Se duplica en la interfaz de metro?
Diogo
Sí, es realmente molesto. Desinstalé la versión Metro de Evernote precisamente por ese motivo.
Jim McKeeth
6

La siguiente publicación de blog y el código de soporte le muestran cómo hacer esto con IApplicationActivationManager en PowerShell.

Obtenga una lista de aplicaciones de metro y ejecútelas en Windows 8 con PowerShell «Tome's Land of IT

Afortunadamente, pude encontrar algún código en Stack Overflow que mostraba cómo usar esto en C # (la publicación también enumeró la información de registro que describiré en este artículo). Después de algunos ajustes en el código y la sintaxis de Add-Type, pude exponer la función que necesitaba en PowerShell. Después de eso, solo era cuestión de envolver la función en algo parecido a PowerShell.

El código se puede encontrar en poshcode .

Tomé Tanasovski
fuente
¡Bienvenido a Super User, Tome! Nos gustaría que las respuestas fueran independientes, por lo tanto, no depender demasiado de los recursos externos. Cité las partes más relevantes de tu publicación de blog, pero puedes editar mucho más, también en lo que respecta a resolver el problema exacto del OP.
slhck
Muy buena información, aquí!
Ben Richards el