Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo argomento descrive come creare un'app console UWP (Universal Windows Platform) utilizzando C++/WinRT o C++/CX
Annotazioni
L'estensione Modelli di Progetto App Console (Universali) non supporta Visual Studio 2022. Visual Studio 2017 o Visual Studio 2019 è necessario per installare e usare questi modelli.
A partire da Windows 10, versione 1803, puoi scrivere app console UWP C++/WinRT o C++/CX che vengono eseguite in una finestra della console, ad esempio una finestra dos o una finestra della console di PowerShell. Le app console usano la finestra della console per l'input e l'output e possono usare funzioni Universal C Runtime, ad esempio printf e getchar. Le app console UWP possono essere pubblicate in Microsoft Store. Hanno una voce nell'elenco delle app e un riquadro principale che può essere aggiunto al menu Start. Le app console UWP possono essere avviate dal menu Start, anche se in genere verranno avviate dalla riga di comando.
Per visualizzarne uno in azione, ecco un video sulla creazione di un'app console UWP.
Usare un modello di app console UWP
Per creare un'app console UWP, installa innanzitutto i modelli di progetto per app console (Universal) , disponibili nel Visual Studio Marketplace. I modelli installati sono quindi disponibili in Nuovo progetto>Installato>Altri linguaggi>Visual C++>Windows Universal come Console App C++/WinRT (Universal Windows) e Console App C++/CX (Universal Windows).
Aggiungere il codice a main()
I modelli aggiungono Program.cpp, che contiene la funzione main()
. Questa è la posizione in cui inizia l'esecuzione in un'app console UWP. Accedere agli argomenti della riga di comando con i parametri __argc
e __argv
. L'app console UWP viene chiusa quando il controllo viene restituito da main()
.
L'esempio seguente di Program.cpp è aggiunto dal template di Console App C++/WinRT:
#include "pch.h"
using namespace winrt;
// This example code shows how you could implement the required main function
// for a Console UWP Application. You can replace all the code inside main
// with your own custom code.
int __cdecl main()
{
// You can get parsed command-line arguments from the CRT globals.
wprintf(L"Parsed command-line arguments:\n");
for (int i = 0; i < __argc; i++)
{
wprintf(L"__argv[%d] = %S\n", i, __argv[i]);
}
// Keep the console window alive in case you want to see console output when running from within Visual Studio
wprintf(L"Press 'Enter' to continue: ");
getchar();
}
Comportamento dell'app console UWP
Un'app console UWP può accedere al file system dalla directory da cui viene eseguita e di seguito. Ciò è possibile perché il modello di template aggiunge l'estensione AppExecutionAlias al file Package.appxmanifest dell'app. Questa estensione consente inoltre all'utente di digitare l'alias da una finestra della console per avviare l'app. L'app non deve trovarsi nel percorso di sistema per essere avviata.
Puoi anche concedere ampio accesso al file system all'app console UWP aggiungendo la funzionalità con restrizioni broadFileSystemAccess
come descritto in Autorizzazioni di accesso ai file. Questa funzionalità funziona con le API nello spazio dei nomi Windows.Storage.
Più di un'istanza di un'applicazione console UWP può essere eseguita alla volta perché il modello aggiunge la funzionalità SupportsMultipleInstances al file Package.appxmanifest dell'app.
Il modello aggiunge anche la funzionalità di Subsystem="console"
al file Package.appxmanifest, che indica che questa app UWP è un'app console. Si notino i prefissi desktop4
e iot2 namespace
. Le app console UWP sono supportate solo nei progetti desktop e Internet delle cose (IoT).
<Package
...
xmlns:desktop4="http://schemas.microsoft.com/appx/manifest/desktop/windows10/4"
xmlns:iot2="http://schemas.microsoft.com/appx/manifest/iot/windows10/2"
IgnorableNamespaces="uap mp uap5 desktop4 iot2">
...
<Applications>
<Application Id="App"
...
desktop4:Subsystem="console"
desktop4:SupportsMultipleInstances="true"
iot2:Subsystem="console"
iot2:SupportsMultipleInstances="true" >
...
<Extensions>
<uap5:Extension
Category="windows.appExecutionAlias"
Executable="YourApp.exe"
EntryPoint="YourApp.App">
<uap5:AppExecutionAlias desktop4:Subsystem="console">
<uap5:ExecutionAlias Alias="YourApp.exe" />
</uap5:AppExecutionAlias>
</uap5:Extension>
</Extensions>
</Application>
</Applications>
...
</Package>
Considerazioni aggiuntive per le app console UWP
- Solo le app UWP C++/WinRT e C++/CX possono essere app console.
- Le app console UWP devono essere destinate al tipo di progetto Desktop o IoT.
- Le app console UWP potrebbero non creare una finestra. Non possono usare MessageBox() o Location() o qualsiasi altra API che può creare una finestra per qualsiasi motivo, ad esempio richieste di consenso dell'utente.
- Le app console UWP non possono utilizzare attività in background né fungere da attività in background.
- Con l'eccezione dell'attivazione Command-Line, le app console UWP non supportano i contratti di attivazione, tra cui l'associazione di file, l'associazione di protocolli, ecc.
- Anche se le app console UWP supportano la creazione di più istanze, non supportano reindirizzamento a più istanze
- Per un elenco delle API Win32 disponibili per le app UWP, consulta Win32 e COM API per le app UWP