Come posso eseguire un'applicazione Metro dalla riga di comando in Windows 8?


20

Sto sviluppando un sistema di automazione e una delle sue caratteristiche è l'esecuzione di applicazioni dalla riga di comando (voglio dire, automaticamente senza intervento umano).

Su Windows 7 potrei eseguire tutto ciò che desidero da una chiamata da riga di comando, esiste un modo simile per fare lo stesso con Windows 8 con anche le app Metro installate su di esso?


In Windows 8, è c'è una riga di comando?
Ian Boyd,

1
sì, basta digitare cmd sull'interfaccia della metropolitana ed eseguirlo.
Diogo,

Stai usando VS?
soandos,

2
FWIW, potresti invece concentrarti su Powershell. Il pacchetto AppX include diversi cmdlet per la gestione delle app Metro (vedere Get-Help Appxper i dettagli), sebbene al momento non sia stato possibile trovare nulla per eseguirle.
Indrek,

1
Per quanto ne so, non è possibile eseguire le app Metro dalla riga di comando. Spero che qualcuno conosca alcuni hack / soluzioni.
Corporate Geek,

Risposte:


12

Si! Ho trovato un modo...

Sulla base di questo codice sorgente ("Apri un'app Metro Style dall'app desktop"), mi sono reso conto che potevo chiamare le app metro proprio come di solito eseguiamo manualmente. Voglio dire, se premi Ctrl+ Esce vai alla schermata della metropolitana, potresti semplicemente digitare il nome dell'app metro, ad esempio "store", premere Entere il gioco è fatto, l'app metro è in esecuzione. Sulla base di questo ho creato un VBScript molto semplice per eseguire esattamente questi passaggi automaticamente:

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

objShell.SendKeys "^ {ESC}"

WScript.Sleep 1000

objShell.SendKeys WScript.Arguments.Item (0)

WScript.Sleep 1000

objShell.SendKeys "{ENTER}"

Salvalo come "metro.vbs" e chiamalo dalla riga di comando con il nome dell'app metro sul primo argomento:

negozio metro.vbs

Ecco, molto semplice e ottimizzato.

PS: Tutti i crediti sono stati dati ad AlKhuzaei , l'utente del sito Codeplex che ha creato il codice correlato. Grazie.


Ah, mi chiedevo la stessa cosa. Soluzione interessante. L'unico problema è se hai due programmi con lo stesso nome, come la versione Metro e desktop di Evernote installata. Che viene lanciato con quanto sopra ?? Dovrebbe esserci un altro modo poiché Visual Studio può avviare l'applicazione che si sta sviluppando.
Jim McKeeth,

Penso che a causa del ctrl + esc, si aprirà solo l'app della metropolitana ... È qualcosa che farebbe il test.
Diogo,

No, l'ho appena provato. [Ctrl] + [Esc] è uguale a [Win], ed entrambi mostrano semplicemente il menu Start , che consente di avviare qualsiasi programma lì - Metro e Desktop allo stesso modo.
Jim McKeeth,

Quindi, cosa fa Windows 8 quando due app metro e desk hanno lo stesso nome ??? Si duplica sull'interfaccia della metropolitana?
Diogo,

Sì, è davvero fastidioso. Ho disinstallato la versione Metro di Evernote proprio per questo motivo.
Jim McKeeth,

6

Il seguente post di blog e il codice di supporto mostrano come eseguire questa operazione con IApplicationActivationManager in PowerShell.

Ottieni un elenco di app metropolitane e lanciale in Windows 8 usando PowerShell «Tome's Land of IT

Fortunatamente, sono stato in grado di trovare del codice su Stack Overflow che mostrava come usarlo in C # (il post elencava anche le informazioni del registro che descriverò in questo articolo). Dopo aver modificato il codice e la sintassi Add-Type, sono stato in grado di esporre la funzione di cui avevo bisogno in PowerShell. Dopodiché si trattava solo di avvolgere la funzione in qualcosa che assomiglia a PowerShell.

Il codice può essere trovato su poshcode .


Benvenuto in Super User, Tome! Vorremmo che le risposte fossero autonome, quindi non fare troppo affidamento su risorse esterne. Ho citato le parti più rilevanti del tuo post sul blog, ma sei libero di modificare molto di più, anche per quanto riguarda la risoluzione dell'esatto problema del PO.
slhck,

Informazioni molto interessanti, qui!
Ben Richards,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.