ユニバーサル Windows プラットフォームを使用してコンソール アプリを作成するCreate a Universal Windows Platform console app

このトピックでは、作成する方法を説明します、 C +/cli WinRTまたは C++/cli CX ユニバーサル Windows プラットフォーム (UWP) コンソール アプリです。This topic describes how to create a C++/WinRT or C++/CX Universal Windows Platform (UWP) console app.

以降では、Windows 10、バージョン 1803 では、次を記述できます C +/cli WinRT または C++/cli DOS または PowerShell のコンソール ウィンドウなどのコンソール ウィンドウで実行される CX UWP コンソール アプリです。Starting with Windows 10, version 1803, you can write C++/WinRT or C++/CX UWP console apps that run in a console window, such as a DOS or PowerShell console window. コンソール アプリの入力と出力をコンソール ウィンドウを使用し、使用できますユニバーサル C ランタイムなどの関数printfgetcharします。Console apps use the console window for input and output, and can use Universal C Runtime functions such as printf and getchar. Microsoft Store には、UWP コンソール アプリを公開することができます。UWP console apps can be published to the Microsoft Store. それらのアプリは、アプリのリストにエントリがあり、スタート メニューに固定することができるプライマリ タイルがあります。They have an entry in the app list, and a primary tile that can be pinned to the Start menu. コマンドラインから起動する、通常は、UWP コンソール アプリをスタート メニューから起動できます。UWP console apps can be launched from the Start menu, though you will typically launch them from the command-line.

アクションのいずれかを表示するには、UWP のコンソール アプリケーションの作成に関するビデオを次に示します。To see one in action, here's a video about Creating a UWP Console App.

UWP コンソール アプリ テンプレートを使用するUse a UWP Console app template

UWP コンソール アプリを作成するには、まず Visual Studio Marketplace から入手できるコンソール アプリ (ユニバーサル) プロジェクト テンプレートをインストールします。To create a UWP console app, first install the Console App (Universal) Project Templates, available from the Visual Studio Marketplace. インストール済みのテンプレートは、で利用できます新しいプロジェクト > インストール済み > 他の言語 > Visual C++ > Windows Universalとしてコンソール アプリC++/WinRT (ユニバーサル Windows)コンソール アプリC++/CX (ユニバーサル Windows) します。The installed templates are then available under New Project > Installed > Other Languages > Visual C++ > Windows Universal as Console App C++/WinRT (Universal Windows) and Console App C++/CX (Universal Windows).

Main() にコードを追加します。Add your code to main()

テンプレートは Program.cpp を追加します。これには main() 関数が含まれています。The templates add Program.cpp, which contains the main() function. これは、UWP コンソール アプリで実行が開始される場所です。This is where execution begins in a UWP console app. __argc および __argv パラメーターでコマンドライン引数にアクセスします。Access the command-line arguments with the __argc and __argv parameters. 制御が main() から返ってくると、UWP コンソール アプリは終了します。The UWP console app exits when control returns from main().

次の例のProgram.cppで追加、コンソール アプリ C+/cli WinRTテンプレート。The following example of Program.cpp is added by the Console App C++/WinRT template:

#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 Console app behavior

UWP コンソール アプリは、実行されているディレクトリ、およびその下のファイル システムにアクセスできます。A UWP Console app can access the file-system from the directory it is run from, and below. テンプレートは AppExecutionAlias 拡張機能をアプリの Package.appxmanifest ファイルに追加するため、これが可能になります。This is possible because the template adds the AppExecutionAlias extension to your app's Package.appxmanifest file. この拡張機能を使用すると、コンソール ウィンドウからエイリアスを入力してアプリを起動することもできます。This extension also enables the user to type the alias from a console window to launch the app. アプリを起動するためにシステムパスに入る必要はありません。The app does not need to be in the system path to launch.

さらに、ファイル アクセス許可 で説明されているように、制限された機能 broadFileSystemAccess を追加することで、ファイルシステムへの広範なアクセスを UWP コンソール アプリに付与することができます。You can additionally give broad access to the file system to your UWP console app by adding the restricted capability broadFileSystemAccess as described in File access permissions. この機能は、Windows.Storage 名前空間の API で動作します。This capability works with APIs in the Windows.Storage namespace.

テンプレートによって SupportsMultipleInstances 機能がアプリの Package.appxmanifest ファイルに追加されるため、複数の UWP コンソール アプリのインスタンスを同時に実行できます。More than one instance of a UWP Console app can run at a time because the template adds the SupportsMultipleInstances capability to your app's Package.appxmanifest file.

テンプレートは Package.appxmanifest ファイルに Subsystem="console" の機能も追加します。これは、この UWP アプリがコンソール アプリであることを示しています。The template also adds the Subsystem="console" capability to the Package.appxmanifest file, which denotes that this UWP app is a console app. desktop4 と iot2 namespace プレフィックスに注意してください。Note the desktop4 and iot2 namespace prefixes. UWP コンソール アプリは、デスクトップやモノのインターネット (IoT) プロジェクトでのみサポートされています。UWP Console apps are only supported on desktop and Internet of Things (IoT) projects.

<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 コンソール アプリに関するその他の考慮事項Additional considerations for UWP console apps

  • のみ C +/cli WinRT および C++/cli コンソール アプリが CX の UWP アプリにあります。Only C++/WinRT and C++/CX UWP apps may be console apps.
  • UWP コンソール アプリはデスクトップまたは IoT プロジェクト タイプをターゲットにする必要があります。UWP Console apps must target the Desktop, or IoT project type.
  • UWP のコンソール アプリ ウィンドウを作成できません。UWP console apps may not create a window. ユーザーの同意プロンプトなど、MessageBox() または Location()、またはその他何らかの理由でウィンドウを作成することがありますの API を使用できません。They cannot use MessageBox(), or Location(), or any other API that may create a window for any reason, such as user consent prompts.
  • UWP コンソール アプリは、バックグラウンド タスクを消費したり、バックグラウンド タスクとして機能したりしない場合があります。UWP console apps may not consume background tasks nor serve as a background task.
  • コマンド ラインのアクティブ化 を除き、UWP コンソール アプリは、ファイルの関連付け、プロトコルの関連付けなどのアクティブ化をサポートしていません。With the exception of Command-Line activation, UWP console apps do not support activation contracts, including file association, protocol association, etc.
  • UWP コンソール アプリは複数インスタンスをサポートしていますが、複数インスタンスのリダイレクト はサポートしていませんAlthough UWP console apps support multi-instancing, they do not support Multi-instancing redirection
  • UWP アプリで使用できる Win32 API の一覧については、「UWP アプリ用の Win32 API と COM API」をご覧ください。For a list of Win32 APIs that are available to UWP apps, see Win32 and COM APIs for UWP apps