Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird beschrieben, wie Sie eine C++/WinRT-- oder C++/CX-Konsolen-App für die universelle Windows-Plattform (UWP) erstellen.
Hinweis
Die -Konsolen-App (universelle) Projektvorlagen Erweiterung unterstützt Visual Studio 2022 nicht. Zum Installieren und Verwenden dieser Vorlagen ist entweder Visual Studio 2017 oder Visual Studio 2019 erforderlich.
Ab Windows 10, Version 1803, können Sie C++/WinRT- oder C++/CX-UWP-Konsolen-Apps schreiben, die in einem Konsolenfenster ausgeführt werden, z. B. ein DOS- oder PowerShell-Konsolenfenster. Konsolen-Apps verwenden das Konsolenfenster für Eingabe und Ausgabe und können Universelle C-Runtime- Funktionen wie printf- und getcharverwenden. UWP-Konsolen-Apps können im Microsoft Store veröffentlicht werden. Sie verfügen über einen Eintrag in der App-Liste und eine primäre Kachel, die an das Startmenü angeheftet werden kann. UWP-Konsolen-Apps können über das Startmenü gestartet werden, sie werden jedoch in der Regel über die Befehlszeile gestartet.
Um sich das Ganze in Aktion anzusehen, hier ist ein Video über das Erstellen einer UWP-Konsolen-App.
Verwenden einer UWP-Konsolen-App-Vorlage
Um eine UWP-Konsolen-App zu erstellen, installieren Sie zuerst die Projektvorlagen für Konsolen-Apps (Universal) , verfügbar im Visual Studio Marketplace. Die installierten Vorlagen sind dann unter Neues Projekt>Installiert>Andere Sprachen>Visual C++>Windows Universal als Konsolen-App C++/WinRT (Universal Windows) und Konsolen-App C++/CX (Universal Windows)verfügbar.
Fügen Sie Ihren Code zu main() hinzu
Die Vorlagen fügen Program.cpphinzu, das die main()-Funktion enthält. Hier beginnt die Ausführung in einer UWP-Konsolen-App. Greifen Sie auf die Befehlszeilenargumente mit den Parametern __argc und __argv zu. Die UWP-Konsolen-App wird beendet, wenn die Kontrolle zu main()zurückkehrt.
Das folgende Beispiel für Program.cpp wird durch die Konsolenanwendung C++/WinRT Vorlage hinzugefügt:
#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();
}
Verhalten der UWP-Konsolen-App
Eine UWP-Konsolen-App kann über das Verzeichnis, aus dem sie ausgeführt wird, auf das Dateisystem zugreifen, und darunter. Dies ist möglich, da das Template die AppExecutionAlias-Erweiterung zur Datei "Package.appxmanifest" Ihrer App hinzufügt. Mit dieser Erweiterung kann der Benutzer auch den Alias aus einem Konsolenfenster eingeben, um die App zu starten. Die App muss sich nicht im Systempfad befinden, um zu starten.
Darüber hinaus können Sie Ihrer UWP-Konsolen-App umfassenden Zugriff auf das Dateisystem gewähren, indem Sie die eingeschränkte Funktion broadFileSystemAccess hinzufügen, wie in Dateizugriffsberechtigungenbeschrieben. Diese Funktion funktioniert mit APIs im Windows.Storage Namespace.
Mehrere Instanzen einer UWP-Konsolen-App können gleichzeitig ausgeführt werden, da die Vorlage die SupportsMultipleInstances Funktion zur Datei "Package.appxmanifest" ihrer App hinzufügt.
Die Vorlage fügt außerdem der Datei "Package.appxmanifest" die Subsystem="console"-Funktion hinzu, die angibt, dass es sich bei dieser UWP-App um eine Konsolen-App handelt. Beachten Sie die Präfixe desktop4 und iot2 namespace. UWP-Konsolen-Apps werden nur für Desktop- und IoT-Projekte (Internet of Things) unterstützt.
<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>
Weitere Überlegungen für UWP-Konsolen-Apps
- Nur C++/WinRT- und C++/CX-UWP-Apps können Konsolen-Apps sein.
- UWP-Konsolen-Apps müssen auf den Desktop- oder IoT-Projekttyp abzielen.
- UWP-Konsolen-Apps erstellen möglicherweise kein Fenster. Sie können MessageBox() oder Location() oder eine andere API nicht verwenden, die aus irgendeinem Grund ein Fenster erstellen kann, z. B. Benutzereinwilligungsaufforderungen.
- UWP-Konsolen-Apps verwenden möglicherweise keine Hintergrundaufgaben oder dienen nicht als Hintergrundaufgabe.
- Mit Ausnahme von Command-Line Aktivierungunterstützen UWP-Konsolen-Apps keine Aktivierungsverträge, einschließlich Dateizuordnung, Protokollzuordnung usw.
- Obwohl UWP-Konsolen-Apps die Multiinstanzerstellung unterstützen, unterstützen sie keine Multi-Instancing-Umleitung
- Eine Liste der Win32-APIs, die für UWP-Apps verfügbar sind, finden Sie unter Win32- und COM-APIs für UWP-Apps