Partilhar via


Criar um aplicativo de console da Plataforma Universal do Windows

Este tópico descreve como criar um aplicativo de console da Plataforma Universal do Windows (UWP) C++/WinRT ou C++/CX.

Observação

A extensão Modelos de Projeto do Aplicativo de Console (Universal) não dá suporte ao Visual Studio 2022. O Visual Studio 2017 ou o Visual Studio 2019 é necessário para instalar e usar esses modelos.

A partir do Windows 10, versão 1803, você pode escrever aplicativos de console UWP C++/WinRT ou C++/CX que são executados em uma janela de console, como uma janela de console do DOS ou do PowerShell. Os aplicativos de console usam a janela do console para entrada e saída e podem usar funções universais do C Runtime , como printf e getchar. Os aplicativos de console UWP podem ser publicados na Microsoft Store. Eles têm uma entrada na lista de aplicativos e um bloco primário que pode ser fixado no menu Iniciar. Os aplicativos de console UWP podem ser iniciados no menu Iniciar, embora você normalmente os inicie na linha de comando.

Para ver um em ação, aqui está um vídeo sobre como criar um aplicativo de console UWP.

Usar um modelo de aplicativo de console UWP

Para criar um aplicativo de console UWP, primeiro instale os Modelos de Projeto do Aplicativo de Console (Universal), disponíveis no Visual Studio Marketplace. Os modelos instalados estão disponíveis em Novo Projeto>Instalado,>Outras Linguagens,>Visual C++>Windows Universal como Aplicativo de Console C++/WinRT (Universal Windows) e Aplicativo de Console C++/CX (Universal Windows).

Adicione seu código a main()

Os modelos adicionam Program.cpp, que contém a main() função. É aqui que a execução começa em um aplicativo de console UWP. Acesse os argumentos da linha de comando com os __argc parâmetros e __argv . O aplicativo de console UWP é encerrado quando o controle retorna do main().

O exemplo a seguir de Program.cpp é adicionado pelo modelo C++/WinRT do Aplicativo de 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();
}

Comportamento do aplicativo de console UWP

Um aplicativo de console UWP pode acessar o sistema de arquivos do diretório do qual ele é executado e abaixo. Isso é possível porque o modelo adiciona a extensão AppExecutionAlias ao arquivo Package.appxmanifest do aplicativo. Essa extensão também permite que o usuário digite o alias de uma janela do console para iniciar o aplicativo. O aplicativo não precisa estar no caminho do sistema para iniciar.

Além disso, você pode conceder amplo acesso ao sistema de arquivos ao seu aplicativo de console UWP adicionando a funcionalidade broadFileSystemAccess restrita, conforme descrito em Permissões de acesso a arquivos. Essa funcionalidade funciona com APIs no namespace Windows.Storage.

Mais de uma instância de um aplicativo de console UWP pode ser executada por vez porque o modelo adiciona a funcionalidade SupportsMultipleInstances ao arquivo Package.appxmanifest do aplicativo.

O modelo também adiciona a Subsystem="console" funcionalidade ao arquivo Package.appxmanifest, que indica que esse aplicativo UWP é um aplicativo de console. Observe os prefixos desktop4 e iot2 namespace . Os aplicativos de console UWP só têm suporte em projetos de IoT (área de trabalho) e Internet das Coisas.

<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>

Considerações adicionais para aplicativos de console UWP