Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается создание консольного приложения C++/WinRT или C++/CX универсальной платформы Windows (UWP).
Замечание
Расширение шаблонов проектов
Начиная с Windows 10 версии 1803, можно создавать консольные приложения C++/WinRT или C++/CX UWP, которые выполняются в окне консоли, например окно консоли DOS или PowerShell. Консольные приложения используют окно консоли для ввода и вывода, а также могут использовать функции универсальной среды выполнения C, такие как printf и getchar. Консольные приложения UWP можно публиковать в Microsoft Store. У них есть запись в списке приложений и основная плитка, которую можно закрепить в меню "Пуск". Консольные приложения UWP можно запустить из меню "Пуск", хотя обычно они будут запускаться из командной строки.
Чтобы увидеть его в действии, вот видео о создании консольного приложения UWP.
Использование шаблона консольного приложения UWP
Чтобы создать консольное приложение UWP, сначала установитешаблонов проектов консольного приложения
Добавьте ваш код в main()
Шаблоны добавляют файл Program.cpp, который содержит функцию main()
. Именно здесь начинается выполнение в консольном приложении UWP. Доступ к аргументам командной строки с помощью параметров __argc
и __argv
. Консольное приложение UWP завершается, когда управление возвращается из main()
.
Следующий пример Program.cpp добавляется шаблоном консольного приложения 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();
}
Поведение консольного приложения UWP
Консольное приложение UWP может получить доступ к файловой системе из каталога, из который он запускается, и ниже. Это возможно, так как шаблон добавляет расширение AppExecutionAlias в файл Package.appxmanifest приложения. Это расширение также позволяет пользователю вводить псевдоним из окна консоли для запуска приложения. Приложение не должно находиться в системном пути для запуска.
Кроме того, вы можете предоставить широкий доступ к файловой системе консольному приложению UWP, добавив ограниченную возможность broadFileSystemAccess
, как это описано в разрешения доступа к файлам. Эта возможность работает с API в пространстве имен Windows.Storage.
Несколько экземпляров консольного приложения UWP могут выполняться одновременно, так как шаблон добавляет SupportsMultipleInstances возможность в файл Package.appxmanifest приложения.
Шаблон также добавляет возможность Subsystem="console"
в файл Package.appxmanifest, который указывает, что это приложение UWP является консольным приложением. Обратите внимание на префиксы desktop4
и iot2 namespace
. Консольные приложения UWP поддерживаются только в классических и интернет-проектах 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>
Дополнительные рекомендации для консольных приложений UWP
- Консольные приложения могут быть только приложения C++/WinRT и C++/CX UWP.
- Консольные приложения UWP должны ориентироваться на тип проекта Desktop или IoT.
- Консольные приложения UWP могут не создавать окно. Они не могут использовать MessageBox(), location() или любой другой API, который может создать окно по какой-либо причине, например запросы на согласие пользователя.
- Консольные приложения UWP не могут использовать фоновые задачи и не служить фоновой задачей.
- За исключением активации Command-Line, консольные приложения UWP не поддерживают контракты активации, включая сопоставление файлов и протоколов и т. д.
- Хотя консольные приложения UWP поддерживают многоуровневую настройку, они не поддерживают перенаправление нескольких подключений
- Чтобы просмотреть список API Win32, доступных для приложений UWP, обратитесь к разделу API Win32 и COM для приложений UWP