Masaüstü uygulamalarında Windows Çalışma Zamanı API'leri desteği

C# veya C++ masaüstü uygulamanızda çoğu Windows Çalışma Zamanı (WinRT) API'sini kullanabilirsiniz (bkz. Windows Çalışma Zamanı (WinRT) ad alanları), masaüstü uygulamalarında desteklenmeyen veya kısıtlamaları olan iki ana WinRT API kümesi vardır:

  • Yalnızca bir Evrensel Windows Platformu (UWP) uygulamasında kullanılmak üzere tasarlanmış kullanıcı arabirimi (UI) özelliklerine bağımlılıkları olan API'ler.
  • Paket kimliği gerektiren API'ler (bkz. Paket kimliği gerektiren özellikler). Bu TÜR API'ler yalnızca MSIXkullanılarak paketlenmiş masaüstü uygulamalarında desteklenir.

Bu makalede, bu WinRT API'lerinin her iki kümesiyle ilgili ayrıntılar sağlanır. Bu makale kullanılabilir olduğunda, masaüstü uygulamalarında desteklenmeyen API'lerle aynı işlevselliği elde etmek için alternatif API'ler önerir. Alternatif API'lerin çoğu WinUI 3'te veya Windows SDK'sında bulunan WinRT COM arabirimleri aracılığıyla kullanılabilir.

Note

.NET kullanan uygulamalar, bu makalede listelenen bazı WinRT COM arabirimleri için sağlanan sınıf uygulamalarından yararlanabilir. Bu sınıflarla çalışmak, doğrudan WinRT COM arabirimlerini kullanmaktan daha kolaydır. Kullanılabilir sınıf uygulamaları hakkında daha fazla bilgi için Bir .NET uygulamasından interop API'lerini çağırma bölümüne bakın. Bu sınıfların .NET 6 SDK veya üzerini gerektirdiğini unutmayın.

Yalnızca UWP kullanıcı arabirimi özelliklerine bağımlılıkları olan API'ler

Bazı WinRT API'leri, bir UWP uygulamasındaki kullanıcı arabirimi senaryoları için özel olarak tasarlanmıştır. İş parçacığı modeli ve diğer platform farklılıkları nedeniyle bu API'ler masaüstü uygulamalarında düzgün davranmıyor. Bu API'ler ve bunlara bağımlılıkları olan diğer WinRT API'leri masaüstü uygulamalarında kullanılmak üzere desteklenmez.

Desteklenmeyen temel sınıflar

Bu WinRT sınıfları masaüstü uygulamalarında desteklenmez:

Class Alternatif API'ler
ApplicationView Hiçbiri
CoreApplicationView Bunun yerine WinUI tarafından sağlanan Window sınıfını kullanın.
CoreApplicationViewTitleBar ExtendViewIntoTitleBar özelliği yerine WinUI tarafından sağlanan Window.ExtendsContentIntoTitleBar özelliğini kullanın.
CoreDispatcher Bunun yerine WinUI tarafından sağlanan Microsoft.UI.Xaml.Window.DispatcherQueue özelliğini kullanın.

Windows.UI.Xaml.Window.Dispatcher ve Windows.UI.Xaml.DependencyObject.Dispatcher özelliklerinin bir masaüstü uygulamasında null döndürdüğünü unutmayın.
CoreWindow Ayrıca aşağıdaki IInitializeWithWindow uygulayan Sınıfları bölümüne bakın.

GetKeyState yöntemi yerine, WinUI tarafından sağlanan InputKeyboardSource.GetKeyStateForCurrentThread yöntemini kullanın.

PointerCursor özelliği yerine WinUI tarafından sağlanan UIElement.ProtectedCursor özelliğini kullanın. Bu özelliğe erişmek için UIElement alt sınıfına sahip olmanız gerekir.
UserActivity Bunun yerine IUserActivitySourceHostInterop COM arabirimini kullanın (useractivityinterop.h).

Masaüstü uygulamalarında desteklenmeyen diğer WinRT API'ler için, bu konunun ilerleyen bölümlerinde "Desteklenmeyen üyeler" kısmına () bakın.

XxxForCurrentView yöntemine sahip sınıflar

Birçok WinRT sınıfında UIViewSettings.GetForCurrentViewgibi GetForCurrentView veya CreateForCurrentView yöntemi statik vardır. XxxForCurrentView yöntemlerinin, masaüstü uygulamalarında desteklenmeyen ApplicationView türüne örtük bir bağımlılığı vardır. ApplicationView masaüstü uygulamalarında desteklenmediğinden, xxxforcurrentView yöntemlerinden hiçbiri de desteklenmez. Desteklenmeyen bazı XxxForCurrentView yöntemleri yalnızca nulldöndürmez, aynı zamanda özel durumlar da oluşturur.

Note

CoreInputView.GetForCurrentViewmasaüstü uygulamalarında desteklenir ve CoreWindowolmadan bile kullanılabilir. Herhangi bir iş parçacığında bir CoreInputView nesnesi almak için bu yöntemi kullanabilirsiniz; ve bu iş parçacığının ön plan penceresi varsa, bu nesne olaylar üretir.

Aşağıdaki sınıflar masaüstü uygulamalarında desteklenir; ancak bir masaüstü uygulamasındaki bir örneğini almak için GetForCurrentView veya CreateForCurrentView yöntemlerini farklı bir mekanizma kullanırsınız. Aşağıda, alternatif API olarak bir COM arabirimi listelenmiş olan sınıflar için, C# geliştiricileri bu WinRT COM arabirimlerini de kullanabilir (bkz. .NET uygulamasından birlikte çalışma API'lerini çağırın). Liste kapsamlı olmayabilir.

Class Alternatif API'ler
Hesapları Ayarları Paneli Bunun yerine IAccountsSettingsPaneInterop COM arabirimini kullanın (accountssettingspaneinterop.h).
CoreDragDropManager Bunun yerine IDragDropManagerInterop COM arabirimini kullanın (dragdropinterop.h).
CoreTextServicesManager Bu sınıf şu anda yalnızca Windows Insider Preview derlemelerinde masaüstü uygulamalarında desteklenmektedir.
DataTransferManager Bunun yerine IDataTransferManagerInterop COM arabirimini kullanın (shobjidl_core.h).
EkranBilgisi DisplayInformationörneğini almak için IDisplayInformationStaticsInterop arabirimini kullanın.

Alternatif olarak, LogicalDpi özelliği yerine XamlRoot.RasterizationScale özelliğini kullanabilir ve XamlRoot.Changed olayı aracılığıyla değişiklikleri dinleyebilirsiniz ( WinUI'de XamlRoot.RasterizationScale özelliği sağlanır).

Ayrıca , RawPixelsPerViewPixel özelliği yerine WinUI tarafından sağlanan XamlRoot.RasterizationScale özelliğini kullanma seçeneğiniz vardır.
Girdi Paneli Bunun yerine IInputPaneInterop COM arabirimini kullanın (inputpaneinterop.h).
PlayToManager Bunun yerine IPlayToManagerInterop COM arabirimini kullanın (playtomanagerinterop.h).
Print3DManager Bunun yerine IPrinting3DManagerInterop COM arabirimini kullanın (print3dmanagerinterop.h).
PrintManager Bunun yerine IPrintManagerInterop COM arabirimini kullanın (printmanagerinterop.h).
radyalcontroller Bunun yerine IRadialControllerInterop COM arabirimini kullanın (radialcontrollerinterop.h).
RadialControllerConfiguration Bunun yerine IRadialControllerConfigurationInterop COM arabirimini kullanın (radialcontrollerinterop.h).
ResourceContext Bakınız: MRT'den MRT Core'a geçiş.
ResourceLoader Bakınız: MRT'den MRT Core'a geçiş.
SpatialInteractionManager Bunun yerine ISpatialInteractionManagerInterop COM arabirimini kullanın (spatialinteractionmanagerinterop.h).
SystemMediaTransportControls Bunun yerine ISystemMediaTransportControlsInterop COM arabirimini kullanın (systemmediatransportcontrolsinterop.h).
UserActivityRequestManager Bunun yerine IUserActivityRequestManagerInterop COM arabirimini kullanın (useractivityinterop.h).
UIViewSettings Bunun yerine IUIViewSettingsInterop COM arabirimini kullanın (uiviewsettingsinterop.h).

API'ler GetForCurrentView veya CreateForCurrentView yöntemine alternatif sağlamadığından, aşağıdaki sınıflar masaüstü uygulamalarında desteklenmiyor. Liste kapsamlı olmayabilir.

Class Alternatif API'ler
AppCapture Hiçbiri
Aydınlık Kontrolü Hiçbiri
ConnectedAnimationService Hiçbiri
CoreInputView Hiçbiri
CoreWindowResizeManager Hiçbiri
Görüntü Geliştirme Geçersiz Kılma Hiçbiri
EdgeGesture Hiçbiri
GazeInputSourcePreview Hiçbiri
Hdmi Ekran Bilgileri Hiçbiri
HolographicKeyboardPlacementOverridePreview Hiçbiri
KeyboardDeliveryInterceptor Hiçbiri
LockApplicationHost Hiçbiri
FareCihazı Hiçbiri
PointerVisualizationSettings Hiçbiri
KorumaPolitikasıYöneticisi Hiçbiri
SearchPane Hiçbiri
AyarlarBölmesi Hiçbiri
SystemNavigationManager Hiçbiri
SystemNavigationManagerPreview Hiçbiri
WebAuthenticationBroker Yok. Daha fazla ayrıntı için WebAuthenticationBroker.AuthenticateAsync throws COMException GitHub sorununa bkz.

IInitializeWithWindow uygulayan sınıflar

Belirli seçiciler, açılan pencereler, iletişim kutuları ve diğer Windows Çalışma Zamanı (WinRT) nesneleri, kullanıcı arabirimini görüntülemek için genellikle CoreWindow bağımlıdır. CoreWindow masaüstü uygulamalarında desteklenmese de (yukarıdaki Core desteklenmeyen sınıflar bakın), yine de biraz birlikte çalışma kodu ekleyerek bu WinRT sınıflarının çoğunu masaüstü uygulamanızda kullanabilirsiniz.

Daha fazla bilgi (etkilenen türlerin listesi dahil) ve kod örnekleri için, bkz. CoreWindow'a bağlı WinRT kullanıcı arabirimi nesnelerini görüntüleme ve.

Desteklenmeyen üyeler

Bu bölümde, masaüstü uygulamalarında kullanılmak üzere desteklenmeyen WinRT sınıflarının belirli üyeleri listelenmektedir (veya kapsamlı bir listenin mümkün olmadığı durumlarda açıklanmaktadır). Aksi belirtilmediği sürece, bu üyeler dışındaki sınıfların geri kalanı masaüstü uygulamalarında desteklenir.

Events

Aşağıdaki sınıflar, belirtilen olaylar dışında masaüstü uygulamalarında desteklenir.

Class Desteklenmeyen olaylar
uisettings RenkDeğerleriDeğişti
ErişilebilirlikAyarları HighContrastChanged

Methods

Aşağıdaki sınıflar, belirtilen yöntemler dışında masaüstü uygulamalarında desteklenir.

Class Desteklenmeyen yöntemler
CihazBilgisiEşleme PairAsync

İstek adlandırma desenini kullanan yöntemler

appCapability.RequestAccessAsyncveStoreContext.RequestPurchaseAsyncgibi İstek adlandırma desenini izleyen yöntemlerin çoğu masaüstü uygulamalarında desteklenmez. Bu yöntemler dahili olarak Windows.UI.Popups sınıfını kullanır. Bu sınıf, iş parçacığının masaüstü uygulamalarında desteklenmeyen bir CoreWindow nesnesine sahip olmasını gerektirir.

İstek adlandırma desenini izleyen yöntemlerin tam listesi çok uzundur ve bu makale bu yöntemlerin kapsamlı bir listesini sağlamaz.

Paket kimliği gerektiren API'ler

Aşağıdaki WinRT sınıfları paket kimliği gerektirir (bkz. Paket kimliği gerektiren özellikler). Bu API'ler yalnızca paketlenmiş (yani çalışma zamanında paket kimliğine sahip olan) masaüstü uygulamalarında desteklenir. Liste kapsamlı olmayabilir.

Windows. ApplicationModel...

Windows.Data

Windows. Aygıtları...

Windows. Foundation...

Windows. Küreselleşme...

Windows.Grafikler...

Windows. Yönetimi...

Windows.Media

Windows. Ağ...

Windows.Services.Maps...

Important

Windows Haritalar platformu API'leri (Windows. Services.Maps.*) kullanım dışıdır ve Windows'in gelecekteki sürümlerinde kullanılamayabilir. Daha fazla bilgi için bkz. Kullanım dışı bırakılan özellikler için kaynaklar.

Windows.Services.Store...

Windows. Depolama...

Windows. Sistem...

Windows. UI...

Ayrıca, paket kimliği olmayan bir masaüstü uygulamasından çağrıldığında, AdaptiveMediaSource.CreateFromUriAsync yöntemleri ms-appx ve ms-resource URI biçimlerini desteklemez.