Aracılığıyla paylaş


Evrensel Windows Platformu konsol uygulaması oluşturma

Bu konuda, C++/WinRT veya C++/CX Evrensel Windows Platformu (UWP) konsol uygulamasının nasıl oluşturulacağı açıklanır.

Uyarı

Konsol Uygulaması (Evrensel) Proje Şablonları uzantısı Visual Studio 2022'yi desteklemez. Bu şablonları yüklemek ve kullanmak için Visual Studio 2017 veya Visual Studio 2019 gereklidir.

Windows 10, sürüm 1803'ten başlayarak, DOS veya PowerShell konsol penceresi gibi bir konsol penceresinde çalışan C++/WinRT veya C++/CX UWP konsol uygulamaları yazabilirsiniz. Konsol uygulamaları giriş ve çıkış için konsol penceresini kullanır ve printf ve getchar gibi Evrensel C Çalışma Zamanı işlevlerini kullanabilir. UWP konsol uygulamaları Microsoft Store'da yayımlanabilir. Uygulama listesinde bir girdisi ve Başlat menüsüne sabitlenebilen bir birincil kutucuğu vardır. UWP konsol uygulamaları Başlat menüsünden başlatılabilir, ancak bunları genellikle komut satırından başlatırsınız.

Birini çalışırken görmek için işte UWP Konsol Uygulaması Oluşturma hakkında bir video.

UWP Konsol uygulaması şablonu kullanma

UWP konsol uygulaması oluşturmak için önce Visual Studio Market'ten edinilebilen Konsol Uygulaması (Evrensel) Proje Şablonları'nı yükleyin. Yüklü şablonlar daha sonra Yeni Proje>Yüklü>Diğer Diller>Visual C++> altında Konsol Uygulaması C++/WinRT (Evrensel Windows) ve Konsol Uygulaması C++/CX (Evrensel Windows) altında kullanılabilir.

Kodunuzu main() içine ekleme

Şablonlar, işlevini içeren main()dosyasını eklerler. UWP konsol uygulamasında yürütme burada başlar. __argc ve __argv parametreleriyle komut satırı bağımsız değişkenlerine erişin. Kontrol main()'dan döndüğünde UWP konsol uygulaması kapanır.

Aşağıdaki Program.cpp örneği , Konsol Uygulaması C++/WinRT şablonu tarafından eklenir:

#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 Konsol uygulaması davranışı

UWP Konsol uygulaması, çalıştırıldığı dizin ve onun altındaki dizinlerden dosya sistemine erişebilir. Bunun nedeni şablonun AppExecutionAlias uzantısını uygulamanızın Package.appxmanifest dosyasına eklemesi olabilir. Bu uzantı, kullanıcının uygulamayı başlatmak için bir konsol penceresinden diğer adı yazmasına da olanak tanır. Uygulamanın başlatılması için sistem yolunda olması gerekmez.

Ayrıca broadFileSystemAccess bölümünde açıklandığı gibi kısıtlanmış özelliği ekleyerek UWP konsol uygulamanıza dosya sistemine geniş erişim verebilirsiniz. Bu özellik , Windows.Storage ad alanında API'lerle çalışır.

Şablon uygulamanızın Package.appxmanifest dosyasına SupportsMultipleInstances özelliğini eklediğinden bir UWP Konsol uygulamasının birden fazla örneği aynı anda çalıştırılabilir.

Şablon ayrıca package.appxmanifest dosyasına bu UWP uygulamasının bir konsol uygulaması olduğunu belirten özelliği ekler Subsystem="console" . desktop4 ve iot2 namespace ön eklerine dikkat edin. UWP Konsol uygulamaları yalnızca masaüstü ve Nesnelerin İnterneti (IoT) projelerinde desteklenir.

<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 konsol uygulamaları için ek dikkat edilmesi gerekenler

  • Konsol uygulamaları yalnızca C++/WinRT ve C++/CX UWP uygulamaları olabilir.
  • UWP Konsol uygulamaları Masaüstü'nü veya IoT proje türünü hedeflemelidir.
  • UWP konsol uygulamaları pencere oluşturamayabilir. MessageBox() veya Location() veya kullanıcı onayı istemleri gibi herhangi bir nedenle pencere oluşturabilecek başka bir API kullanamazlar.
  • UWP konsol uygulamaları arka plan görevlerini kullanamaz ve bir arka plan görevi olarak hizmet edemez.
  • Command-Line etkinleştirme dışında, UWP konsol uygulamaları dosya ilişkilendirme, protokol ilişkilendirme vb. dahil olmak üzere etkinleştirme sözleşmelerini desteklemez.
  • UWP konsol uygulamaları çoklu oturum açma özelliğini desteklese de, Çoklu oturum açma yeniden yönlendirmesini desteklemez
  • UWP uygulamalarında kullanılabilen Win32 API'lerinin listesi için bkz. UWP uygulamaları için Win32 ve COM API'leri