Membuat aplikasi konsol Platform Windows Universal

Topik ini menjelaskan cara membuat aplikasi konsol C++/WinRT atau C++/CX Platform Windows Universal (UWP).

Catatan

Ekstensi Templat Proyek Aplikasi Konsol (Universal) tidak mendukung Visual Studio 2022. Visual Studio 2017 atau Visual Studio 2019 diperlukan untuk menginstal dan menggunakan templat ini.

Dimulai dengan Windows 10, versi 1803, Anda dapat menulis aplikasi konsol C++/WinRT atau C++/CX UWP yang berjalan di jendela konsol, seperti jendela konsol DOS atau PowerShell. Aplikasi konsol menggunakan jendela konsol untuk input dan output, dan dapat menggunakan fungsi Universal C Runtime seperti printf dan getchar. Aplikasi konsol UWP dapat diterbitkan ke Microsoft Store. Mereka memiliki entri dalam daftar aplikasi, dan petak peta utama yang dapat disematkan ke menu Mulai. Aplikasi konsol UWP dapat diluncurkan dari menu Mulai, meskipun Anda biasanya akan meluncurkannya dari baris perintah.

Untuk melihat tindakannya, berikut adalah video tentang Membuat Aplikasi Konsol UWP.

Menggunakan templat aplikasi Konsol UWP

Untuk membuat aplikasi konsol UWP, pertama-tama instal Templat Proyek Aplikasi Konsol (Universal), yang tersedia dari Visual Studio Marketplace. Templat yang diinstal kemudian tersedia di bawah Proyek> BaruYang Diinstal> Bahasa LainVisual C++>Windows Universal sebagai Aplikasi Konsol C++/WinRT (Universal Windows) dan Aplikasi Konsol C++/CX (Universal Windows).>

Tambahkan kode Anda ke main()

Templat menambahkan Program.cpp, yang berisi main() fungsi . Di sinilah eksekusi dimulai di aplikasi konsol UWP. Akses argumen baris perintah dengan __argc parameter dan __argv . Aplikasi konsol UWP keluar saat kontrol kembali dari main().

Contoh Program.cpp berikut ditambahkan oleh templat Aplikasi Konsol 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();
}

Perilaku aplikasi Konsol UWP

Aplikasi Konsol UWP dapat mengakses sistem file dari direktori tempatnya dijalankan, dan di bawah ini. Ini dimungkinkan karena templat menambahkan ekstensi AppExecutionAlias ke file Package.appxmanifest aplikasi Anda. Ekstensi ini juga memungkinkan pengguna untuk mengetik alias dari jendela konsol untuk meluncurkan aplikasi. Aplikasi tidak perlu berada di jalur sistem untuk diluncurkan.

Anda juga dapat memberikan akses luas ke sistem file ke aplikasi konsol UWP Anda dengan menambahkan kemampuan broadFileSystemAccess terbatas seperti yang dijelaskan dalam Izin akses file. Kemampuan ini berfungsi dengan API di namespace Windows.Storage .

Lebih dari satu instans aplikasi Konsol UWP dapat berjalan pada satu waktu karena templat menambahkan kemampuan SupportsMultipleInstances ke file Package.appxmanifest aplikasi Anda.

Templat ini juga menambahkan Subsystem="console" kemampuan ke file Package.appxmanifest, yang menunjukkan bahwa aplikasi UWP ini adalah aplikasi konsol. Perhatikan awalan desktop4 dan iot2 namespace . Aplikasi Konsol UWP hanya didukung pada proyek desktop dan Internet of Things (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>

Pertimbangan tambahan untuk aplikasi konsol UWP

  • Hanya aplikasi C++/WinRT dan C++/CX UWP yang mungkin berupa aplikasi konsol.
  • Aplikasi Konsol UWP harus menargetkan jenis proyek Desktop, atau IoT.
  • Aplikasi konsol UWP mungkin tidak membuat jendela. Mereka tidak dapat menggunakan MessageBox(), atau Location(), atau API lain yang dapat membuat jendela karena alasan apa pun, seperti permintaan persetujuan pengguna.
  • Aplikasi konsol UWP mungkin tidak menggunakan tugas latar belakang atau berfungsi sebagai tugas latar belakang.
  • Dengan pengecualian aktivasi Baris Perintah, aplikasi konsol UWP tidak mendukung kontrak aktivasi, termasuk asosiasi file, asosiasi protokol, dll.
  • Meskipun aplikasi konsol UWP mendukung multi-instancing, aplikasi tersebut tidak mendukung pengalihan Multi-instancing
  • Untuk daftar API Win32 yang tersedia untuk aplikasi UWP, lihat Win32 dan COM API untuk aplikasi UWP