Créer une application de console de plateforme Windows universelle
Cette rubrique explique comment créer une application console C++/WinRT ou C++/CX plateforme Windows universelle (UWP).
Remarque
L’extension Modèles de projet d’application console (universelle) ne prend pas en charge Visual Studio 2022. Visual Studio 2017 ou Visual Studio 2019 est requis pour installer et utiliser ces modèles.
À compter de Windows 10, version 1803, vous pouvez écrire des applications console C++/WinRT ou C++/CX UWP qui s’exécutent dans une fenêtre de console, telle qu’une fenêtre de console DOS ou PowerShell. Les applications console utilisent la fenêtre de console pour l’entrée et la sortie, et peuvent utiliser des fonctions runtime C universelles telles que printf et getchar. Les applications console UWP peuvent être publiées dans le Microsoft Store. Ils ont une entrée dans la liste des applications et une vignette principale qui peut être épinglée au menu Démarrer. Les applications console UWP peuvent être lancées à partir du menu Démarrer, bien que vous les lancez généralement à partir de la ligne de commande.
Pour en voir une en action, voici une vidéo sur la création d’une application console UWP.
Utiliser un modèle d’application console UWP
Pour créer une application console UWP, installez d’abord les modèles de projet d’application console (universelle), disponibles à partir de Visual Studio Marketplace. Les modèles installés sont ensuite disponibles sous New Project>Installed>Other Languages>Visual C++>Windows Universal as Console App C++/WinRT (Universal Windows) and Console App C++/CX (Windows universel).
Ajouter votre code à main()
Les modèles ajoutent Program.cpp, qui contient la main()
fonction. C’est là que l’exécution commence dans une application console UWP. Accédez aux arguments de ligne de commande avec les paramètres et __argv
les __argc
paramètres. L’application console UWP se ferme lorsque le contrôle retourne main()
.
L’exemple suivant de Program.cpp est ajouté par le modèle C++/WinRT de l’application console :
#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();
}
Comportement de l’application console UWP
Une application console UWP peut accéder au système de fichiers à partir du répertoire à partir duquel elle est exécutée et ci-dessous. Cela est possible, car le modèle ajoute l’extension AppExecutionAlias au fichier Package.appxmanifest de votre application. Cette extension permet également à l’utilisateur de taper l’alias à partir d’une fenêtre de console pour lancer l’application. L’application n’a pas besoin d’être dans le chemin d’accès système à lancer.
Vous pouvez également accorder un accès étendu au système de fichiers à votre application console UWP en ajoutant la fonctionnalité broadFileSystemAccess
restreinte, comme décrit dans les autorisations d’accès aux fichiers. Cette fonctionnalité fonctionne avec les API de l’espace de noms Windows.Storage .
Plusieurs instances d’une application console UWP peuvent s’exécuter à la fois, car le modèle ajoute la fonctionnalité SupportsMultipleInstances au fichier Package.appxmanifest de votre application.
Le modèle ajoute également la Subsystem="console"
fonctionnalité au fichier Package.appxmanifest, ce qui indique que cette application UWP est une application console. Notez les desktop4
préfixes et iot2 namespace
. Les applications console UWP ne sont prises en charge que sur les projets IoT (Bureau et Internet des objets).
<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>
Considérations supplémentaires relatives aux applications console UWP
- Seules les applications UWP C++/WinRT et C++/CX peuvent être des applications console.
- Les applications console UWP doivent cibler le type de projet Desktop ou IoT.
- Les applications console UWP peuvent ne pas créer de fenêtre. Ils ne peuvent pas utiliser MessageBox(), ou Location(), ou toute autre API qui peut créer une fenêtre pour une raison quelconque, comme les invites de consentement de l’utilisateur.
- Les applications console UWP peuvent ne pas consommer de tâches en arrière-plan ni servir de tâche en arrière-plan.
- À l’exception de l’activation en ligne de commande, les applications console UWP ne prennent pas en charge les contrats d’activation, notamment l’association de fichiers, l’association de protocole, etc.
- Bien que les applications console UWP prennent en charge la redirection multi-instanciation, elles ne prennent pas en charge la redirection multistanciation
- Pour obtenir la liste des API Win32 disponibles pour les applications UWP, consultez les API Win32 et COM pour les applications UWP